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更好的方式来代表它。我怎样才能正确地重写它?例如,没有内联参数。
答
现在我明白了,它可以在这样的方式进行:
task.status=:status_processed
...
->addParams([':status_processed' => Task::STATUS_PROCESSED])
嗯。这是我认为你不应该转换它的一个例子。这种格式更具可读性。 – topher
我可以在此查询中使用Task :: STATUS_PROCESSED和其他常见常量的占位符吗?我在Yii2 DAO中看到过,但在查询生成器中没有看到。 –