Yii2在执行find()之后向AR添加范围
我有以下情况: 有一个Yii2在执行find()之后向AR添加范围,yii2,Yii2,我有以下情况: 有一个项目表和一个任务表项目有许多任务 所以,现在我做一个项目::find()->all()。因此,我得到了一个$projects对象,可以通过$projects[0]->task访问相关任务 但在我看来,我还希望输出done=0的所有任务以及未来7天内到期的任务量。因此,是否有可能在$projects[0]->task上添加一个范围 Yi2的实现方法是什么?基于分块的方法(它们返回类的实例,换句话说,$this变量)。因此,您可以找到必要的任务,如下所示: Project:fi
项目
表和一个任务
表<代码>项目有许多任务
所以,现在我做一个项目::find()->all()
。因此,我得到了一个$projects
对象,可以通过$projects[0]->task
访问相关任务
但在我看来,我还希望输出done=0的所有任务以及未来7天内到期的任务量。因此,是否有可能在$projects[0]->task
上添加一个范围
Yi2的实现方法是什么?基于分块的方法(它们返回类的实例,换句话说,$this
变量)。因此,您可以找到必要的任务
,如下所示:
Project:find()->joinWith('task')->where(['done' => 0])->all();
或用于获取任务
$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();
但在第二种情况下,您需要添加更多操作以将所有任务分组到父项目
有关更多详细信息,请参阅。我发现它是我自己的。可以通过$projects[0]->getTasks()获取关系,然后获取ActiveQuery以添加新范围