【问题标题】:how to use doctrine getArrayResult to return just row id and name?如何使用学说 getArrayResult 只返回行 ID 和名称?
【发布时间】:2012-07-26 08:58:38
【问题描述】:

嗨,我有这个 dql 查询

createQuery("SELECT b.name FROM Album\Entity\Brand b")->getArrayResult();

它返回这个

array
 0 => 
  array
   'id' => int 11
   'name' => string 'aaas' (length=4)

我该怎么做才能把结果变成这样的东西

array(11=>'asss')

我的意思是像数组

array(id=>name,id=>name,...)

dql 或 getArrayResult 方法中是否有针对此问题的特定选项?

【问题讨论】:

  • 这不是一个问题。我返回数据库中的数据。您应该检索此数组并基于此数组构建自己的数组。
  • 是的,我知道,但我相信教义必须有更简单的方法来生成简单的数组结果

标签: arrays doctrine-orm dql


【解决方案1】:

我昨晚刚遇到这个问题。你想做的事是不可能的,反正也不完全是。

如果您决定检索整个实体对象而不是仅检索名称,则可以使用以下内容:

createQuery("SELECT b FROM Album\Entity\Brand b INDEX BY b.id")->getArrayResult();

...结果你会得到:

Array(
    [id] => object,
    ....
);

但是,如果你这样做:

createQuery("SELECT b.name FROM Album\Entity\Brand b INDEX BY b.id")->getArrayResult();

...好吧,INDEX BY 被忽略了。不太清楚为什么。

here 这个人似乎已经解决了这个问题,但他使用的是 Doctrine 2.1,而我使用的是 2.0。你用的是哪个版本的?

【讨论】:

    【解决方案2】:

    因为你必须写:

    createQuery("SELECT b.id, b.name FROM Album\Entity\Brand b INDEX BY b.id")->getArrayResult();
    

    更复杂的例子:

    $u = $em-> createQuery('SELECT u.id, u.name FROM MainBundle:User u INDEX BY u.id')->getArrayResult();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 2015-02-03
      • 1970-01-01
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多