我有3个模型,分别是contracts
,centers
和user_centers
。
contracts
和centers
之间的关系是1到N(1个中心有N个合同)
centers
和user_centers
之间的关系是1个中心,N为user_centers
。
我正在尝试雄辩地说一个通过user_id
(user_centers
表过滤)返回合同的函数
为此,我执行以下操作
$query = Contract::query();
$user_id = $request->query('userId');
$query->when(request('user_id'), function ($q) use ($user_id) {
$q->whereHas('centers.user_centers', function ($q) use ($user_id) {
$q->where('user_id', $user_id);
});
});
这行不通,我不知道自己是否了解这种关系或雄辩。
谢谢
答案 0 :(得分:1)
只需在模式上添加功能
class Contracts extends Model {
...
public function centres()
{
$this->hasMany(Centres::class, 'centre_id', 'id');
}
}
在有多个user_centres的1个中心中,在模型中使用此功能:
class Centers extends Model {
...
public function user_centers()
{
$this->hasMany(user_centers::class, 'user_centers_id', 'id');
}
}
雄辩:
Contract::with('centres')->get();