簡體   English   中英

如何將此查詢轉換為Laravel查詢生成器?

[英]How to translate this query to Laravel Query Builder?

我不確定time_diff方法中的內部SQL:

SELECT t1.started_at as chain_break,
time_to_sec(timediff(t1.started_at,IFNULL(
                                          (SELECT MAX(t2.ended_at)
                                           FROM status_records t2
                                           WHERE t2.user_id=189
                                           AND t2.started_at< t1.started_at
                                          ), t1.started_at
                                        )
                        )
                ) / 3600 AS time_off 
FROM status_records t1 
WHERE t1.user_id=189 
ORDER BY t1.ended_at DESC 
LIMIT 6

除了將此DB::query作為原始SQL放入DB::query之外,還有什么好方法嗎?

是的,您可以使用selectRaw()將子查詢添加為字段選擇。 要創建子查詢,可以創建另一個查詢構建器。

嘗試這個

DB::raw("SELECT t1.started_at as chain_break,
time_to_sec(timediff(t1.started_at,IFNULL(
                                          (SELECT MAX(t2.ended_at)
                                           FROM status_records t2
                                           WHERE t2.user_id=189
                                           AND t2.started_at< t1.started_at
                                          ), t1.started_at
                                        )
                        )
                ) / 3600 AS time_off 
FROM status_records t1 
WHERE t1.user_id=189 
ORDER BY t1.ended_at DESC 
LIMIT 6");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM