php 不等于函数在Laravel中不起作用

scyqe7ek  于 2023-03-28  发布在  PHP
关注(0)|答案(3)|浏览(137)

不等于函数在下面的代码中不工作,当我通过Postman运行它时,但同样的查询在MySQL中给出输出。Laravel Eloquent代码-

Invoice::where('invoices.centre_code', $userInfo->centre_code)
                    ->where("invoices.itemTotalPrice","<>", "invoices.paymentCollected") // this line is not working
                    ->join('customers', 'customers.customer_code', '=', 'invoices.customerCode')
                    ->join('items', 'items.id', '=', 'invoices.itemId')
                    ->select('invoices.*', 'customers.customerName', 'customers.customerDialCode', 'customers.customerCity', 'customers.customerAddress', 'customers.customerMobile', 'items.itemName')
                    ->whereBetween('invoices.created_at', [$from, $to])
                    ->oldest("invoices.nextPaymentDate")
                    ->get();

上面的代码返回了这个SQL查询,当我运行它时,MySQL cmd运行得很好。

select `invoices`.*, `customers`.`customerName`, `customers`.`customerDialCode`, `customers`.`customerCity`, `customers`.`customerAddress`, `customers`.`customerMobile`, `items`.`itemName` from `invoices` inner join `customers` on `customers`.`customer_code` = `invoices`.`customerCode` inner join `items` on `items`.`id` = `invoices`.`itemId` where `invoices`.`centre_code` = 705405 and `invoices`.`itemTotalPrice` <> invoices.paymentCollected and `invoices`.`created_at` between 2023-03-24 00:00:00 and 2023-03-24 23:59:59 order by `invoices`.`nextPaymentDate` asc

这段代码不工作->where("invoices.itemTotalPrice","<>", "invoices.paymentCollected")
我们期望的数据是invoices.itemTotalPrice!=invoices.paymentCollected,但是每当我们运行代码时,它都会获取给定日期内的所有数据。如果invoices.itemTotalPrice==invoices.paymentCollected,它应该排除这些行,但这不起作用。我们使用的是Laravel 10.0

uajslkp6

uajslkp61#

查看您粘贴在评论中的日志,我们可以看到<>被视为=
要简化问题,您可以用途:

->whereNot("invoices.itemTotalPrice", "invoices.paymentCollected")
qco9c6ql

qco9c6ql2#

使用->whereColumn ('invoices.itemTotalPrice', '<>', 'invoices.paymentCollected')比较列

gj3fmq9x

gj3fmq9x3#

where雄辩的帮助器接受一系列参数的数组。
参数序列可以是
1.色谱柱|值(相当于column=value
1.色谱柱|经营者|值(相当于column<operator>value
因此,在给定的有说服力的代码中,invoices.paymentCollected被计算为值
如果你需要在连接上放置约束,请使用这里描述的语法
或者,如果列是同一个表的一部分,则可以使用自联接
也可以使用@Pippo提到的whereColumn语法

相关问题