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以添加新范围