如何將以下內容轉換爲Eloquent語法?我知道那裏有一個派生表,因此不確定Laravel中的正確語法是什麼?Laravel - 如何將包含串聯查詢的派生錶轉換爲Eloquent語法?
SELECT firstname
, CONCAT_WS
(', '
, CASE WHEN years = 0 THEN NULL ELSE CONCAT(years,' years') END
, CASE WHEN months = 0 THEN NULL ELSE CONCAT(months, ' months') END
, CASE WHEN days = 0 THEN NULL ELSE CONCAT(days, ' days') END
) lengthOfService
FROM
(SELECT firstname
, FLOOR(DATEDIFF(CURDATE(),startdate)/365.2425) years
, FLOOR((DATEDIFF(CURDATE(),startdate)/365.2425 - FLOOR(DATEDIFF(CURDATE(),startdate)/365.2425))* 12) months
, CEILING((((DATEDIFF(CURDATE(),startdate)/365.2425 - FLOOR(DATEDIFF(CURDATE(),startdate)/365.2425))* 12)
- FLOOR((DATEDIFF(CURDATE(),startdate)/365.2425 - FLOOR(DATEDIFF(CURDATE(),startdate)/365.2425))* 12))* 30) days
FROM users
) x
Eloquent是一個ORM,它將物理關係錶轉換爲對象。我不認爲它適用於派生表。但是,您可以在用戶表中添加一個範圍,以過濾到該派生表。 – apokryfos
@apokryfos理論上可以將它包裝到'DB :: raw()'中嗎? – omrakhur
是的,你可以,但這不是真正使用雄辯,這只是使用查詢生成器。 – apokryfos