Исключение с Doctrine2 и HYDRATE_SIMPLEOBJECT - PullRequest
0 голосов
/ 17 марта 2012

В качестве хорошей практики я стараюсь увлажнять объект как можно меньше , поскольку данные будут только для чтения (просто показать объект в моем шаблоне Twig).Итак, я попробовал HYDRATE_SIMPLEOBJECT режим гидратации, но получаю следующее исключение:

Невозможно использовать SimpleObjectHydrator с ResultSetMapping, который содержит более одного результата объекта.

Как я должен интерпретировать это сообщение?Кстати, вот код, который выдает исключение:

protected function getFindAllQueryBuilder()
{
    return $this->createQueryBuilder('p')
        ->select(array('p', 'parent', 'features', 'users'))
        ->leftJoin('p.parent', 'parent')
        ->leftJoin('p.features', 'features')
        ->leftJoin('p.users', 'users');
}

public function findOneBySlugAsObject($slug)
{
    $qb = $this->getFindAllQueryBuilder();

    return $qb
        ->where($qb->expr()->eq('p.slug', ':slug'))
        ->setParameter('slug', $slug)
            ->getQuery()->getOneOrNullResult(Query::HYDRATE_SIMPLEOBJECT);
}

1 Ответ

1 голос
/ 17 марта 2012

SimpleObjectHydrator предназначен для результирующих наборов, в которых вы не используете никакие выборочные соединения в своем запросе, другими словами, вы не можете использовать его, если вы используете более одного псевдонима в своем выборе. SimpleObjectHydrator работает быстрее, поскольку не обрабатывает эти выборочные объединения.

...