2017-02-14 16 views
2

テーブル内の他の列に従ってLaravelの列を計算しようとしていますが、MySQLが許可していないため、WHEREを実行できません。Laravelの雄弁の計算カラムで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で同じことをする方法がわかりません。私はオンラインでいくつかの参考文献を持っていますが、彼らは私には全く意味がありません。これをどのようにして善意のコードに変換するのですか?

答えて

0

カスタムサブクエリに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 
} 
+0

生のニーズ内部のSELECT文は、 ')('で包み、まだそれは '構文エラーまたはアクセス違反が言うべき:1248すべての派生テーブルは、独自のalias'を持っている必要があります – Rohan

関連する問題