1

だから私は2つの内部結合を行っています:

<?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 を Users エンティティに追加しようとしましたが、うまくいきませんでした。

これをクエリの結果で機能させるにはどうすればよいですか?

ありがとう

4

1 に答える 1

0

doctrine だけを使用してやりたいことを行う方法が見つかりませんでしたが、sonota を使用しているため、pic1 と pic2 が必要なため、DataGrid デコレータを作成し、getResult() メソッドをインターセプトしました。管理者クラスでは、buildDataGrid をオーバーライドし (ソース コードはありませんが、それがメソッドだったと思います)、データグリッドを作成しますが、次のようなことを行います。

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

デコレーターは getResult() メソッドによって与えられた結果を Sonata が期待するものに変更するので、オーバーライドする必要はありません。テンプレートの数はわかりません。

助けてくれてありがとう!

于 2015-02-03T21:04:57.913 に答える