我有以下情况:
有一个project
表和一个task
表。 Project hasmany Task
。
所以,现在我做Project::find()->all()
。所以我得到一个$projects
对象,可以通过$projects[0]->task
访问相关任务。
但在我看来,我还希望输出done = 0
所有任务以及在接下来的7天内到期的任务数量。那么有可能在$projects[0]->task
上添加范围吗?
Yii2的做法是什么?
答案 0 :(得分:0)
The Yii Active Record方法(它们返回类的实例,另一个字$this
变量)。所以你可以找到这样的必要tasks
:
Project:find()->joinWith('task')->where(['done' => 0])->all();
或使用The Query Builder获取tasks
。
$query = new Query();
$pTable = Project::tableName();
$tTable = Task::tableName();
$query->select($pTable.'.id AS project_id, '.$tTable.'.id as task_id, done');
$query->from($pTable);
$query->innerJoin($tTable, $pTable.'.id = '.$tTable.'.project_id');
$query->where(['done' => 0]);
$result = $query->all();
但在第二种情况下,您需要添加更多操作以将所有任务分组到父项目。
有关详细信息,请参阅Yii documentation。
答案 1 :(得分:0)