我有以下关系:
客户 - > hasMany(合同)
现在我想让所有客户包括所有具有特定条件的合同:
$c = Customer::with('contracts','contracts.service','contracts.contractpos')
->whereHas('contracts', function ($query) {
$query
->where('invoice_next','=',$this->invoice_next)
->groupBy('customer_id');
})
->orderBy('company')
->get();
但是,我让所有签订合同的客户都满足条件(invoice_next = $ this-> invoice.next),但所有合同都不符合条件。
因此过滤客户的工作,但我得到所有客户合同而不是只有到期的合同。我在哪里弄错了?
似乎"其中"子查询中的条件仅适用于客户,但不会过滤子项(合同)。
感谢任何正确方向的暗示。
问候 eXe
答案 0 :(得分:2)
试试这个:
$c = Customer::with(['contracts' => function($query){
$query->where('invoice_next','=',$this->invoice_next)
->with(['service', 'contractpos'])
->groupBy('customer_id');
}])
->whereHas('contracts', function ($query) {
$query->where('invoice_next','=',$this->invoice_next);
})
->orderBy('company')
->get();