【问题标题】:Doctriine Query VS QueryBuilder Symfony 2.0Doctriine Query VS QueryBuilder Symfony 2.0
【发布时间】:2013-04-02 12:18:48
【问题描述】:

对 Doctrine Query 和 QueryBuilder 有点疑惑。

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

$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')”来过滤要显示的实体,并且我必须像这样使用查询生成器:

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 Class的createQuery函数。

谢谢!

【问题讨论】:

    标签: symfony doctrine query-builder


    【解决方案1】:

    回答你的第一个问题,区别,一般的教义术语如下:

    Query 是表示 DQL 查询的对象。它上面的方法主要与水合作用和获取查询结果有关:e.g. getResult()、getArrayResult()、getSQL()

    QueryBuilder 是构建 DQL 查询的流畅方式。这些方法主要与添加/更改 DQL 子句有关:例如选择(),从(),哪里()

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-18
      • 1970-01-01
      • 2013-03-15
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多