Итак, я делаю два внутренних соединения:
<?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, но это не сработало.
Что мне нужно сделать, чтобы это работало в результате запроса?
Спасибо
Я не нашел способа сделать то, что хотел, используя только доктрину, но так как я использую соноту, и по этой причине мне нужны были pic1 и pic2, я создал DataGrid Decorator и перехватил метод getResult ().
В классе администратора я переопределяю buildDataGrid (сейчас у меня нет исходного кода, но я думаю, что это был метод), и он создаст сетку данных, но затем я сделаю что-то вроде:
$this->datagrid = new DataGridDecorator($this->datagrid)
Затем декоратор изменит результат, полученный методом getResult (), на то, что ожидает соната, и поэтому мне не нужно переопределять, я не знаю, сколько шаблонов.
Спасибо за помощь!
Других решений пока нет …