2016-06-21 48 views
0

我使用Yii2建立查詢和我現在有這樣的查詢:Yii2:如何正確使用查詢生成器

$data = $modelClass::find()->select([ 
    'task_group.*', 
    'count' => 'COUNT(task.id)', 
    'processed_count' => 'SUM(CASE WHEN task.status=\''.Task::STATUS_PROCESSED.'\' THEN 1 ELSE 0 END)', 
    'unprocessed_count' => 'SUM(CASE WHEN task.status=\''.Task::STATUS_UNPROCESSED.'\' THEN 1 ELSE 0 END)', 
    'problem_count' => 'SUM(CASE WHEN task.status=\''.Task::STATUS_PROBLEM.'\' THEN 1 ELSE 0 END)']) 
     ->joinWith('tasks')   
     ->groupBy('task_group.id')->all(); 

但我認爲必須有一些Yii2更好的方式來代表它。我怎樣才能正確地重寫它?例如,沒有內聯參數。

+0

嗯。這是我認爲你不應該轉換它的一個例子。這種格式更具可讀性。 – topher

+0

我可以在此查詢中使用Task :: STATUS_PROCESSED和其他常見常量的佔位符嗎?我在Yii2 DAO中看到過,但在查詢生成器中沒有看到。 –

回答

0

現在我明白了,它可以在這樣的方式進行:

task.status=:status_processed 
... 
->addParams([':status_processed' => Task::STATUS_PROCESSED]) 
相關問題