1

所以我正在做两个内部连接:

<?php

$q->select('o, pic.path pic1, pic_.path pic2');


$q->innerJoin('\TestBundle\Entity\UserImages', 'pic', 'WITH', 'o.id = pic.user');
$q->where('pic.keyname = \'pic1\'');

$q->innerJoin('\TestBundle\Entity\UserImages', 'pic_', 'WITH', 'o.id = pic.user');
$q->where('pic_.keyname = \'pic2\'');

这可行,但返回的结果是这样的:

array (size=1)
  0 => 
    array (size=3)
      0 => 
        object(TestBundle\Entity\user)[1359]
          private 'name' => string 'test' (length=12)
          private 'created' => 
            object(DateTime)[1347]
              ...
          private 'modified' => null
          private 'deleted' => null
          private 'id' => int 1

      'pic1' => string 'pic1.png' (length=8)
      'pic2' => string 'pic2.png' (length=8)

有没有办法在对象中设置 pic1 和 pic2?我尝试将 setPic1/Pic2 添加到用户实体,但没有奏效。

我需要做什么才能使它在查询结果中起作用?

谢谢

4

1 回答 1

0

我没有找到一种方法来只使用教义来做我想做的事,但由于我使用的是 Sonota,这就是我需要 pic1 和 pic2 的原因,我创建了一个DataGrid 装饰器并拦截了 getResult() 方法。在管理类中,我覆盖了 buildDataGrid(现在没有源代码,但我认为这是方法),它将创建数据网格,但随后我将执行以下操作:

$this->datagrid = new DataGridDecorator($this->datagrid)

然后,装饰器会将 getResult() 方法给出的结果更改为奏鸣曲所期​​望的结果,因此我不必重写我不知道有多少模板。

谢谢您的帮助!

于 2015-02-03T21:04:57.913 回答