我有一个客户模型和存款模型关系: 在“存款模型”表中,我有一列:campaign_id 在客户端模型中,我有:
public function deposits()
{
return $this->hasMany(ClientDeposit::class, 'client_id');
}
我做简单查询:
private function relations()
{
return [
'deposits',
];
}
$query->with($this->relations());
$query->whereHas('deposits', function ($query) {
$query->where('campaign_id', '2');
})
此代码返回具有'campaign_id','2'的客户,但同时也向所有其他campaign_id存入资金的客户
clients[0:{deposits: [id: 18507, client_id: 162186, user_id: 22, campaign_id: 2, amount: 100, method_id: null
0: {id: 18507, client_id: 162186, user_id: 22, campaign_id: 2, amount: 100, method_id: null,…}
1: {id: 18505, client_id: 162186, user_id: 22, campaign_id: 2, amount: 100, method_id: null,…}
2: {id: 18506, client_id: 162186, user_id: 22, campaign_id: 10, amount: 100, method_id: null,…}
3: {id: 18498, client_id: 162186, user_id: 22, campaign_id: 3, amount: 100, method_id: null,…}}]
我希望客户记录中的关系仅返回具有campaign_id 2的存款,而不返回所有其他相关的存款
答案 0 :(得分:1)
$query->with([
'deposits' => function($) {
$q->where('campaign_id', '2');
}
])