作为一种良好的做法,我希望尽可能小地保护对象,因为数据将是只读(只需在我的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);
}
答案 0 :(得分:1)
SimpleObjectHydrator用于在查询中不使用任何提取连接的结果集,换句话说,如果在select中使用多个别名,则无法使用它。 SimpleObjectHydrator更快,因为不处理这些提取连接。