使用execute进行Doctrine查询

Mic*_*ick 7 database doctrine symfony 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
    ));
}
Run Code Online (Sandbox Code Playgroud)

选项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();

}
Run Code Online (Sandbox Code Playgroud)

l3l*_*3l0 11

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

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