Laravel Where Not Equal To x 2


Laravel Where Not Equal To x 2

我有一个模型,我想用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。