首页 文章

Doctriine Query VS QueryBuilder Symfony 2.0

提问于
浏览
1

a对Doctrine Query和QueryBuilder有一些疑问 .

我曾经在Repository中使用简单的Query,例如:

$em = $this->getEntityManager();
$dql = "select X from ApuestaBundle:Apuesta X  ORDER BY X.Jornada DESC";
$query = $em->createQuery($dql);
$entity = $query->getResult();

但是我必须从Sonata的Admin类修改函数“createQuery($ context ='list')”来过滤要显示的实体,我不得不像这样使用Query Builder:

public function createQuery($context = 'list'){
     $query = $this->getModelManager()->createQuery($this->getClass(), 'entity');

     $query->select ('e');
     $query->from($this->getClass(), 'e');
     $query->from('CoreBundle\Entity\Resource', 'r');
     $query->where('e.id = r.id AND r.company = :company');
     $query->setParameter('company', 1);  

     return $query;
}

所以,这是我的问题,这是使用Query或QueryBuilder的不同之处 . 因为这样,我无法调用Repository的函数来更改Admin类的createQuery函数 .

谢谢!

1 回答

  • 0

    回答你的第一个问题,差异,一般学说条款如下:

    Query 是表示DQL查询的对象 . 它上面的方法主要涉及水化和获取查询结果等内容: getResult(),getArrayResult(),getSQL()

    QueryBuilder 是构建DQL查询的流畅方式 . 这些方法主要涉及添加/更改DQL子句:例如select(),from(),where()

    但是,我不确定从ModelManagerInterface :: createQuery()返回的Sonata ProxyQueryInterface .

相关问题