/** * Setup additional filters */ public function setupFilters() { $this->activeQuery->andWhere(['content.object_model' => Task::className()]); if (in_array('tasks_meAssigned', $this->filters) || in_array('tasks_open', $this->filters) || in_array('tasks_finished', $this->filters) || in_array('tasks_notassigned', $this->filters) || in_array('tasks_byme', $this->filters)) { $this->activeQuery->leftJoin('task', 'content.object_id=task.id AND content.object_model=:taskModel', [':taskModel' => Task::className()]); if (in_array('tasks_meAssigned', $this->filters)) { $this->activeQuery->leftJoin('task_user', 'task.id=task_user.task_id AND task_user.user_id=:userId', [':userId' => Yii::$app->user->id]); $this->activeQuery->andWhere('task_user.id IS NOT null'); } if (in_array('tasks_notassigned', $this->filters)) { $this->activeQuery->andWhere("(SELECT COUNT(*) FROM task_user WHERE task_id=task.id) = 0"); } if (in_array('tasks_byme', $this->filters)) { $this->activeQuery->andWhere(['task.created_by' => Yii::$app->user->id]); } if (in_array('tasks_open', $this->filters)) { $this->activeQuery->andWhere(['task.status' => Task::STATUS_OPEN]); } if (in_array('tasks_finished', $this->filters)) { $this->activeQuery->andWhere(['task.status' => Task::STATUS_FINISHED]); } } }
public function getTask() { return $this->hasOne(Task::className(), ['id' => 'task_id']); }