Project.php 1.7 KB
<?php

namespace App\Models;

use Illuminate\Support\Facades\DB;

class Project extends Base
{
    //设置关联表名
    protected $table = 'gl_project';
    //自动维护create_at创建时间 updated_at修改时间
    public $timestamps = true;

    const DATABASE_NAME_FIX = 'globalso_project_';

    /**
     * @name:获取当前对象不分页列表
     */
    public function page_lists(){
        $lists = DB::table($this->table)->select(['*'])->where($this->map)->orderBy($this->order)->get();
        return $lists;
    }

    /**
     * 通过ID获取项目信息
     * @param $id
     * @return self
     */
    public static function getProjectById($id)
    {
        return self::where(['id' => $id])->first();
    }

    /**
     * 项目部署服务器信息
     * @return \Illuminate\Database\Eloquent\Relations\HasOne
     */
    public function serverConfig()
    {
        return self::hasOne(ServeConfig::class, 'id', 'serve_id');
    }

    /**
     * 项目部署mysql数据库信息
     * @return \Illuminate\Database\Eloquent\Relations\HasOne
     */
    public function mysqlConfig()
    {
        return self::hasOne(ServeConfig::class, 'id', 'mysql_id');
    }

    /**
     * 项目使用Redis服务器信息, 如果没有即使用默认配置
     * @return \Illuminate\Database\Eloquent\Relations\HasOne
     */
    public function redisConfig()
    {
        return self::hasOne(ServeConfig::class, 'id', 'redis_id');
    }

    /**
     * 获取项目对应数据库名称
     * 初始化数据库、数据表迭代等功能使用
     * TODO 如果前缀变更,请使用该方法进行处理
     * @return string
     */
    public function databaseName()
    {
        return self::DATABASE_NAME_FIX . $this->id;
    }
}