2012-03-16 55 views
0

的良好做法即时特林滋润对象尽可能小,因为数据将是只读(只显示我的嫩枝模板中的实体)。所以,我已经试过HYDRATE_SIMPLEOBJECT水化模式,但我得到这个异常:异常与Doctrine2和HYDRATE_SIMPLEOBJECT

不能与含有 多个对象结果ResultSetMapping使用SimpleObjectHydrator。

我应该如何解读此消息?顺便说一句,这里是抛出异常的代码:

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

SimpleObjectHydrator是结果集,你不使用任何抓取联接在您的查询,换句话说,如果你使用,你不能用它您的选择中有多个别名。 SimpleObjectHydrator速度更快,因为它不处理这些提取连接。