1

嗨,我有这个 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 方法中是否有针对此问题的任何特定选项?

4

2 回答 2

4

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

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

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 被忽略了。不太清楚为什么。

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

于 2012-09-16T17:56:55.460 回答
0

因为你必须写:

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();
于 2015-01-30T13:53:42.810 回答