这里介绍了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);
}
}