Задать вопрос
@T_verdisla_V
Начинающий

Как правильно создать запрос в доктрине?

Здравствуйте! Я пытаюсь сделать запрос с объединением, но не хватает знаний.
public function findAllProductsWithCategory()
    {
    $entityManager = $this->getEntityManager();    
    $queryBuilder = $entityManager->createQueryBuilder();    
    $queryBuilder->select('p')
        ->from(Products::class, 'p')
        ->join(Category::class, 'c')
        ->where('p.category_id = c.id')
        ->orderBy('p.id', 'DESC');
    
    return $queryBuilder->getQuery();
    }

Сделал такой запрос, он мне изначально показался неправильным, как-будто чего то не хватает. Да к тому же интерпритатор выдает ошибку.
Error producing an iterator
И ссылается не строку во вьюхе где начинается цикл с переданным туда объектом из запроса.
public function getIterator()
    {
        try {
            return $this->getCurrentItems();
        } catch (\Exception $e) {
            throw new Exception\RuntimeException('Error producing an iterator', null, $e);
        }
    }

Именно этот код дает исключение. Полазил по форумам там говорят что это либо
«date.timezone» не установлена ​​в php.ini.
либо плохой DQL. Я считаю что у меня проблема с запросом, потому что до этого все запросы работали нормально!
  • Вопрос задан
  • 312 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@shagguboy
getQuery()->getResult()
Ответ написан
Комментировать
Keanor
@Keanor
Ведущий разработчик
В докблоке метода join пример использования
$qb = $em->createQueryBuilder()
         ->select('u')
         ->from('User', 'u')
         ->join('u.Phonenumbers', 'p', Expr\Join::WITH, 'p.is_primary = 1');


вы по связи джойните?

Покажите что вы передаете во view, если вы туда передаете $queryBuilder->getQuery() то ничего работать и не должно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы