gpt4 book ai didi

php - Laravel sql 查询 .. if 条件在 Where

转载 作者:行者123 更新时间:2023-11-29 06:07:02 24 4
gpt4 key购买 nike

我刚开始学习 Laravel 并将常规的 PHP 代码转换为 Laravel。我需要在 Laravel 中执行此查询,但失败了。

SELECT sum(qty_del) as delivery from delivery_sap a where YEAR(a.bill_date) + IF(MONTH(a.bill_date)>6, 1, 0) = 2017

这是我想出来的,但是失败了。

$data = DB::table('delivery_sap')
->select(DB::raw('sum(qty_del) as delivery'))
->whereRaw('YEAR(a.bill_date) + IF(MONTH(a.bill_date)>6, 1, 0) = 2017');

根据下面的答案更正了查询

$data = DB::table('delivery_sap')
->select(DB::raw('sum(qty_del) as delivery'))
->whereRaw('YEAR(bill_date) + IF(MONTH(bill_date)>6, 1, 0) = 2017')
->first();

从 get() 更改为 first,因为我希望它作为一行返回

最佳答案

您可以转储查询构建器生成的查询并将其与原始查询进行比较:

use Illuminate\Support\Facades\DB;

$query = DB::table('delivery_sap')
->select(DB::raw('sum(qty_del) as delivery'))
->whereRaw('YEAR(a.bill_date) + IF(MONTH(a.bill_date)>6, 1, 0) = 2017');

dd($query->toSql());

它返回:

"select sum(qty_del) as delivery from `delivery_sap` where YEAR(a.bill_date) + IF(MONTH(a.bill_date)>6, 1, 0) = 2017"

这与您的原始查询几乎相同。您需要使用最终的 get() 链接调用检索结果:

$data = DB::table('delivery_sap AS a')
->select(DB::raw('sum(qty_del) as delivery'))
->whereRaw('YEAR(a.bill_date) + IF(MONTH(a.bill_date)>6, 1, 0) = 2017')
->get(); // <= Here

关于php - Laravel sql 查询 .. if 条件在 Where,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40867746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com