Doctrine2和HYDRATE_SIMPLEOBJECT的例外情况

时间:2012-03-16 22:18:11

标签: doctrine symfony doctrine-orm

作为一种良好的做法,我希望尽可能小地保护对象,因为数据将是只读(只需在我的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 个答案:

答案 0 :(得分:1)

SimpleObjectHydrator用于在查询中不使用任何提取连接的结果集,换句话说,如果在select中使用多个别名,则无法使用它。 SimpleObjectHydrator更快,因为不处理这些提取连接。