У меня есть запрос, который вытягивает некоторые задания, если они имеют дату окончания и не завершены, что дает желаемый результат:
реальный код
$this->createQueryBuilder('j')
->where('j.completed = :false OR j.completed is NULL')
->andWhere('j.has_due_date = :true')
->andWhere('j.has_due_date = :true')
->setParameters( array(
'false' => FALSE,
'true' => TRUE
) )
->orderBy('j.due_date', 'asc')
->getQuery();
результат
SELECT j FROM App\Entity\Jobs j
WHERE (
j.completed = :false
OR j.completed is NULL
)
AND j.has_due_date = :true
ORDER BY j.due_date ASC
Я хочу следовать передовой практике DQL для этого и чувствую, что есть другой способ или написание этого и только одно предложение WHERE
на вызовна ->where
варианте (andWhere()
, orWhere()
)
На мой взгляд, это что-то вроде этого, но я не могу найти ничего, чтобы подтвердить это:
псевдокод
$query = $this->createQueryBuilder('j')
->where( $requiredClass->
->where('j.completed = :false')
->orWhere('j.completed is NULL')
->setParameter('false', FALSE)
)
->andWhere('j.has_due_date = :true')
->setParameter('true', TRUE)
->orderBy('j.due_date', 'asc')
->getQuery();
Основные вопросы:
- Есть ли способ сделать это вторым способом?
- Излишне усложняю ли я вещи?
- если есть второй способ сделать это, как упомянуто, первое утверждение работает так, почему это должно иметь значение?