我有以下结构
转弯
id
订单付款
id
turn_id
invoice_id
订单发票
id
order_id
订单
id
已取消
合并
我想做的是获得OrderPayments
,其中Order
没有被取消,也没有合并
现在我有下面的代码依次
class Turn{
public function orderPayments(){
return $this->hasMany('OrderPayment');
}
}
我应该如何通过只获得与Order
相关的付款
->where('canceled' < '0000-00-00 00:00:10 ')
->where('merged' < '0000-00-00 00:00:10 ')
非常感谢!!
EDIT使用我实际拥有的关系更新
在OrderPayment
中,我有功能
public function invoice(){
return $this->belongsTo('Invoice');
}
在OrderInvoice
中,我有功能
public function order(){
return $this->belongsTo('Order');
}
这是我在Turn
上尝试的代码,下面是
public function orderPayments(){ return OrderPayment::whereHas('invoice',function($query){ $query->whereHas('order',function($query){ $query->where('canceled','<','0000-00-00 00:00:01') ->where('merged','<','0000-00-00 00:00:01'); }); })->where('turn_id','=',$this->id)->get(); }
我得到以下异常
Call to undefined method Illuminate'Database'Query'Builder::order()
您需要whereHas
:
$payments = OrderPayment::whereHas('invoice', function ($q) {
$q->whereHas('order', function ($q) {
$q->where('canceled', '=', '0000-00-00')
->where('merged', '=', '0000-00-00');
});
})->get();
顺便说一句,我会将这些列更改为nullable
,并搜索whereNull('canceled')
等。