Доктрина: ГДЕ условия в entityManager-> createQuery не работают - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть база данных с 2 таблицами, animal и species.Для ведения обзора моего частного зоопарка я использую приложение Symfony3.Теперь для очень специфического экспорта мне нужен запрос sql, чтобы вернуть всех животных с датой рождения в определенном диапазоне и определенным именем: Все животные, родившиеся в 2001-2009 годах, например, по имени Вальдемар.

К сожалениюWHERE условия не работают.Результат содержит всех животных с любой датой рождения и любым именем:

   $from = new \DateTime('2001-01-01 00:00:00');
   $to = new \DateTime('2010-01-01 00:00:00');

   $query = $entityManager->createQuery(
    'SELECT c
    FROM App\Entity\Animal c
    LEFT JOIN App\Entity\Species s
    WHERE c.species = s.id 
      AND c.animalName IS :animalname
      AND c.dob BETWEEN :from AND :to
    ORDER BY c.dob DESC
    ')
    ->setParameter('from', $from)
    ->setParameter(':animalname', 'Waldemar')
    ->setParameter('to', $to);

    return $query->execute();

Работает только условие WHERE, связанное с JOIN.Как я могу заставить запрос работать как положено?

...