【问题标题】:Index by in query builder查询生成器中的索引
【发布时间】:2012-02-09 22:20:00
【问题描述】:

我正在使用 symfony 2.0.10 来构建一个站点,并在我的控制器中使用以下代码查询数据库表:

$query = $this->getDoctrine()->getRepository('MyBundle:MyTable')->createQueryBuilder('x')->getQuery();

$data = $query->getResult();

我会得到在数组中索引的结果,而不是按序号(0 到 N),而是按指定的字段。我看到我可以在 CreateQuery 方法中指定一个 INDEX BY 来执行此操作,但是如何使用查询生成器执行此操作?在this 问题中给出了答复,但用户没有使用存储库。

编辑 1

$query = $this->getDoctrine()->getEntityManager()->createQueryBuilder()->select('x')->from('MyBundle:MyTable', 'x', 'x.myIndexField')->getQuery();

【问题讨论】:

    标签: php symfony1 doctrine query-builder


    【解决方案1】:

    我没有尝试过,但我确定方法 join 有签名:

    public function join($join, $alias, $conditionType = null, $condition = null, $indexBy = null)
    

    最后一个参数是$indexBy,所以我猜这就是你要找的;)

    【讨论】:

    • 我不想在 SQL 查询中加入一些东西,我只想将结果作为一个字段索引的数组。使用 CreateQuery 命令非常简单,但使用 QueryBuilder 似乎更困难
    • 好像已经在仓库中修复了。看看这个问题报告:doctrine-project.org/jira/browse/DDC-1335你可能想要更新 Doctrine。
    • 我在 symfony 和存储库中使用学说,所以你可以看到我不使用 form 方法。还有其他想法吗?
    • 我很确定这是一个错字。 :) 如果您在此处查看 github 更改日志:github.com/doctrine/doctrine2/commit/… 您可以看到现在有一​​个支持 From__constructor$indexBy ;)
    • 我看到了构造函数总线,正如你所见,我没有使用 form 方法,因为 symfony 的 getRepository 似乎已经在内部做了类似 select * from
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 2015-12-13
    相关资源
    最近更新 更多