我有以下关系:
客户 -> 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();
Run Code Online (Sandbox Code Playgroud)
但是,我得到了所有拥有满足条件的合同的客户 (invoice_next = $this->invoice.next ),但也得到了所有不符合条件的合同。
因此,过滤客户是可行的,但随后我会获得所有客户合同,而不仅仅是到期的合同。我哪里犯了错误?
子查询中的“where”条件似乎只适用于客户,但不能过滤子查询(合同)。
感谢您提供正确方向的任何提示。
问候 eXe
尝试这个:
$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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2872 次 |
| 最近记录: |