仅获取特定的关系记录

时间:2020-02-17 11:20:35

标签: laravel laravel-5 eloquent

我有一个客户模型和存款模型关系: 在“存款模型”表中,我有一列: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的存款,而不返回所有其他相关的存款

1 个答案:

答案 0 :(得分:1)

$query->with([
    'deposits' => function($) {
        $q->where('campaign_id', '2');
    }
])