使用execute进行Doctrine查询

时间:2013-01-31 06:47:31

标签: database symfony doctrine doctrine-orm

Option 1Option 2似乎给出了类似的结果。使用execute statement而不是通常的getResult()方法有什么特别的优势吗?

选项1:

public function getEventsByOrganiser(EventInterface $event, $username)
{
    $qb = $this->repository->createQueryBuilder('e')
        ->select(array('e', 'u'))
        ->leftJoin('e.user', 'u')
        ->andWhere('u.username = :username');

    return $qb->getQuery()->execute(array(
        'username' => $username
    ));
}

选项2:

public function getEventsByOrganiser(EventInterface $event, $username)
{
    $qb = $this->repository->createQueryBuilder('e')
        ->select(array('e', 'u'))
        ->leftJoin('e.user', 'u')
        ->andWhere('u.username = :username')
        ->setParameter('username', $username);

    return $qb->getQuery()->getResult();

}

1 个答案:

答案 0 :(得分:9)

基本上getResult()execute(array())的别名,您可以将其设置为参数水化模式,例如:getResult(Query::HYDRATE_OBJECT)execute(array(), Query::HYDRTE_OBJECT)

唯一区别:在执行方法中,您可以将查询参数设置为第一个参数,这样您就不必在...之前调用setParameter方法。