[英]How do I do WHERE clause on computed columns in Laravel eloquent?
我試圖根據表中的其他列計算Laravel中的列,但由於MySQL不允許,因此無法對其進行WHERE處理。
我發現我需要一個子查詢。 我可以像這樣在MySQL中做到這一點:
SELECT * FROM(
SELECT
@inactive_percentage:=((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(APP_UPDATE_DATE))) / (UNIX_TIMESTAMP(DEL_TASK_DUE_DATE) - UNIX_TIMESTAMP(APP_UPDATE_DATE)) * 100 AS inactive_percentage,
IF(@inactive_percentage <= 33, "low", IF(@inactive_percentage >= 33 && @inactive_percentage <= 66, "normal", "high")) AS inactive
FROM APP_CACHE_VIEW
) as foo WHERE `inactive`='low'
但是我不知道如何在Laravel中做同樣的事情。 我在網上有一些參考資料,但對我來說毫無意義。 如何將其翻譯為口才的代碼?
使用DB :: raw作為您的自定義子查詢。
$datas = DB::table( DB::raw('SELECT
@inactive_percentage:=((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(APP_UPDATE_DATE))) / (UNIX_TIMESTAMP(DEL_TASK_DUE_DATE) - UNIX_TIMESTAMP(APP_UPDATE_DATE)) * 100 AS inactive_percentage,
IF(@inactive_percentage <= 33, "low", IF(@inactive_percentage >= 33 && @inactive_percentage <= 66, "normal", "high")) AS inactive
FROM APP_CACHE_VIEW as foo') )->where('active','low')->get();
then
foreach($datas as $data){
//Your data processing / formatting
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.