Changes filters from in array to in subqueries

Fixes #3280
This commit is contained in:
Rafael de Camargo
2019-08-25 01:49:52 -03:00
committed by Frédéric Guillot
parent 4d07628054
commit 51b3d811e1
4 changed files with 17 additions and 45 deletions

View File

@@ -78,13 +78,7 @@ class TaskSubtaskAssigneeFilter extends BaseFilter implements FilterInterface
*/
public function apply()
{
$task_ids = $this->getSubQuery()->findAllByColumn('task_id');
if (! empty($task_ids)) {
$this->query->in(TaskModel::TABLE.'.id', $task_ids);
} else {
$this->query->eq(TaskModel::TABLE.'.id', 0); // No match
}
$this->query->inSubquery(TaskModel::TABLE.'.id', $this->getSubQuery());
}
/**
@@ -96,12 +90,7 @@ class TaskSubtaskAssigneeFilter extends BaseFilter implements FilterInterface
protected function getSubQuery()
{
$subquery = $this->db->table(SubtaskModel::TABLE)
->columns(
SubtaskModel::TABLE.'.user_id',
SubtaskModel::TABLE.'.task_id',
UserModel::TABLE.'.name',
UserModel::TABLE.'.username'
)
->columns(SubtaskModel::TABLE.'.task_id')
->join(UserModel::TABLE, 'id', 'user_id', SubtaskModel::TABLE)
->neq(SubtaskModel::TABLE.'.status', SubtaskModel::STATUS_DONE);