我有一个模型,我想用eloquent来查询。
在我的表中,我有以下几列。
Order ID
Invoiced -> default(0)
Delivered -> default(0)
我想查询这个表,只显示未开发票和未交货的订单,但可以显示已交货但未开发票或已开发票但未交货的订单。
在Eloquent中我该怎么做呢?
下面是我的代码:
$orders = Order::where('delivered', '<>', 1)->where('invoiced', '<>', 1)->get();
上述工作,但是当我更新订单交付,但发票仍然未付款时,这将从列表中删除订单。
我想排除所有已经完成的订单,即交付和发票。
这个呢:
$orders = Order::where('delivered', '<>', 1)->where('invoiced', '<>', 1)->get();
没有测试,但是试试这个'应该显示订单在哪里交付而没有发票,或发票但没有交付':
$orders = Order::where(function ($query) {
$query->where('delivered', 1)->where('invoiced', '<>', 1);
})->orWhere(function ($query) {
$query->where('delivered', '<>', 1)->where('invoiced', 1);
})->get();
这样做可能会解决您的问题
.. whereNotIn( 'id', [$user_id])->get();
在此解决方案中,您可以选择一个id范围或一个id。