Php 拉维,其中不等于x2

Php 拉维,其中不等于x2,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我有一个模型,我正试图用雄辩的语言来质疑它 在我的表格中,我有以下几列 Order ID Invoiced -> default(0) Delivered -> default(0) 我想查询此表,只显示未开票和未发货的订单,但可以显示已发货但未开票或已开票但未发货的订单 我该如何雄辩地做到这一点 这是我的密码: $orders = Order::where('delivered', '<>', 1)->where('invoiced', '<>',

我有一个模型,我正试图用雄辩的语言来质疑它

在我的表格中,我有以下几列

Order ID
Invoiced -> default(0)
Delivered -> default(0)
我想查询此表,只显示未开票和未发货的订单,但可以显示已发货但未开票或已开票但未发货的订单

我该如何雄辩地做到这一点

这是我的密码:

$orders = Order::where('delivered', '<>', 1)->where('invoiced', '<>', 1)->get();
$orders=Order::where('delivered','',1)->where('invoited','',1)->get();
但是,当我将订单更新为“已交付”,但发票仍然未付时,上述操作将从列表中删除订单

我想排除已完成的所有订单,即已交付和已开具发票。

这是怎么回事:

$orders = Order::where('delivered', '<>', 1)->where('invoiced', '<>', 1)->get();
$orders=Order::where('delivered','',1)->where('invoited','',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();
$orders=Order::where(函数($query){
$query->where('delivered',1)->where('invoited','',1);
})->orWhere(函数($query){
$query->where('delivered','',1)->where('invoited',1);
})->get();
这个怎么办:

$orders = Order::where('delivered', '<>', 1)->where('invoiced', '<>', 1)->get();
$orders=Order::where('delivered','',1)->where('invoited','',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();
$orders=Order::where(函数($query){
$query->where('delivered',1)->where('invoited','',1);
})->orWhere(函数($query){
$query->where('delivered','',1)->where('invoited',1);
})->get();

像这样的事情可能会解决您的问题

.. whereNotIn( 'id', [$user_id])->get();

在这个解决方案中,您可以选择一个id范围或一个id。

类似的方法可能会解决您的问题

.. whereNotIn( 'id', [$user_id])->get();

在这个解决方案中,您可以选择一个id范围或一个id。

这很好,但是它会删除已交付的订单。这应该输出未发货、未开票的订单,但应该显示未发货、或已开票但未发货的订单。我不太明白您想说什么,但这段代码正是这样做的:
SELECT*FROM orders where invoited 1 AND delivered 1
(您问题中的SQL查询)@wollab-您刚才在评论中指定的逻辑与您在问题中指定的逻辑不同抱歉@MarkBaker您的权利。让我更新这个问题。@AlexeyMezenin将其排序,这是我的代码的问题,您的答案是正确的!这是伟大的,但它删除订单,他们已经交付。这应该输出未发货、未开票的订单,但应该显示未发货、或已开票但未发货的订单。我不太明白您想说什么,但这段代码正是这样做的:
SELECT*FROM orders where invoited 1 AND delivered 1
(您问题中的SQL查询)@wollab-您刚才在评论中指定的逻辑与您在问题中指定的逻辑不同抱歉@MarkBaker您的权利。让我更新这个问题。@AlexeyMezenin将其排序,这是我的代码的问题,您的答案是正确的!因为这是一个
,而不是
,我不能用ANDWhere替换orWhere,因为这显然不是一个函数。调用undefined方法illighted\Database\Query\Builder::ANDWhere()只是另一个
WHERE
,而不是
,WHERE
WHERE()
是一个AND,因为它是
,而不是
,我不能用ANDWhere替换WHERE,因为这显然不是一个函数。调用undefined方法illighted\Database\Query\Builder::ANDWhere()只是另一个
WHERE
,而不是
,WHERE
WHERE()
是和