我有一个名为company_team
的关系表,它与company
和user
有关系,并且is_ceo
表中有一个字段company_team
用来标记天气公司团队成员是首席执行官。以下是我的模型定义
class CompanyTeam extends Pivot
{
/**
* return all company team member with out ceo
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function team_member()
{
return $this->belongsTo(User::class, 'user_id');
}
/**
* return only ceo's info
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function company_ceo()
{
$this->where('is_ceo', 1); // it dosen't work, but it is effect l want
return $this->belongsTo(User::class, 'user_id');
}
}
我使用addGlobalScope
搜索了一个答案,但它不适合我,因为当我同时使用team_member
和company_ceo
关系时,它将在两个
答案 0 :(得分:0)
定义关系时不能添加条件。 执行查询时必须添加条件。
CompanyTeam::with(['company_ceo' => function ($q) use() {
$q->where('is_ceo', 1);
}])
->get();
答案 1 :(得分:0)
aria-hidden
我希望这会有所帮助。祝您有美好的一天,并祝您编程愉快...:)
答案 2 :(得分:0)
在用户模型中,您可以定义范围
public function scopeCompanyCeo($query){
return $query->where('is_ceo',1);
}
然后您可以像在控制器中一样使用
$user = User::find(1)->companyCeo()->get();