簡體   English   中英

我如何在雄辯的Laravel中對計算列執行WHERE子句?

[英]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.

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