登录
原创

laravel eloquent关联关系(相同数据库和跨库查询)

发布于 2020-10-09 阅读 1092
  • 后端
  • Laravel
原创

这里介绍了laravel Eloquent关联模型,常规的模型关联主要是相同数据库关联;但是偶尔也会有跨库的模型关联,
这里介绍了如何完成跨库的模型关联

1、基础model

示例:评论、评论审核日志(评论Id,操作员Id)、审核人;评论列表关联查询评论审操作员昵称

//1、审核日志
class ExamineLog extends Model
{
    protected $table = 'admin_examine_log';

    /**
     * 审核员账户信息
     *
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function examineUser()
    {
        return $this->belongsTo(AdminUser::class, 'admin_id');
    }
}

//2、操作人model
class AdminUser extends Model
{
    protected $table = 'admin_users';

    protected $guarded = ['id', 'created_at', 'updated_at'];
}

2、相同数据库管理关系

//相同数据库关联关系
class ArticleComment extends BaseModel
{
   public function examineAdmin()
   {
        return $this->belongsToMany(AdminUser::class, 'admin_examine_log', 'admin_id', 'source_id');
    }
}

3、跨库关联关系

class ArticleComment extends BaseModel
{
    public function examineAdmin()
    {
        $instance = new ExamineLog();
        $instance->setConnection(config('database.default'));
        $query = $instance->newQuery()
            ->whereType(static::EXAMINE_TYPE)
            ->with('examineUser')
            ->selectRaw('admin_id,source_id,status');
        return new BelongsTo($query, $this, static::FOREIGN_KEY, 'source_id', null);
    }
}

评论区

励志做一条安静的咸鱼,从此走上人生巅峰。

0

0

0

举报