Yii2:如何正确使用查询生成器

问题描述:

我使用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中看到过,但在查询生成器中没有看到。 –

现在我明白了,它可以在这样的方式进行:

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