如何在laravel 8中使用ifnull(nullif())

dffbzjpn  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(381)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

昨天关门了。
Improve this question
如何在laravel中使用此查询

(SELECT * FROM `payment_new` WHERE Client_Id= 
(IFNULL(NULLIF(trim(?),''),Client_Id)) and month(Bill_Date)= 
(IFNULL(NULLIF(trim(?),''),MONTH(Bill_Date))) and YEAR(Bill_Date)= 
(IFNULL(NULLIF(trim(?),''),YEAR(Bill_Date))) order by SNo DESC limit 1)
qnakjoqk

qnakjoqk1#

你可以使用Laravel的DB::select查询。然后传递客户端id、月账单日期和年账单日期的参数,然后执行查询。

$query = "
SELECT *
FROM payment_new
WHERE Client_Id = IFNULL(NULLIF(trim(?), ''), Client_Id)
    AND MONTH(Bill_Date) = IFNULL(NULLIF(trim(?), ''), MONTH(Bill_Date))
    AND YEAR(Bill_Date) = IFNULL(NULLIF(trim(?), ''), YEAR(Bill_Date))
ORDER BY SNo DESC
LIMIT 1
";

$params = ['1','05','2023'];
$result = DB::select($query, $params);

希望这能解决你的问题。
通过使用雄辩:

$params = ['1', '05', '2023'];
$result = Payment::where('Client_Id', '=', DB::raw("IFNULL(NULLIF(trim(?), ''), Client_Id)"), $para[0])
->whereMonth('Bill_Date', '=', DB::raw("IFNULL(NULLIF(trim(?), ''), MONTH(Bill_Date))"), $para[1])
->whereYear('Bill_Date', '=', DB::raw("IFNULL(NULLIF(trim(?), ''), YEAR(Bill_Date))"), $para[2])
->orderBy('SNo', 'desc')
->limit(1)
->get();

相关问题