#php #symfony1 #doctrine
#php #symfony1 #доктрина
Вопрос:
В моей таблице используется модуль перевода
// This works fine for 1 item
$o = Doctrine_Core::getTable('myTable')->find(1);
echo $o->getName();
Я хочу иметь возможность запускать запрос и правильно получать все строки с именем (которое находится в таблице перевода)
$o = Doctring_Core::getTable('myTable').createQuery('a')
->leftJoin('a.Translation t')
->andWhere('a.visible = ?', true)
->andWhere('t.lang = ?', 'en')
->execute();
Я хочу иметь возможность делать
foreach($o as $item) {
echo $item->getName();
}
Но мой getName() всегда равен null…
Ответ №1:
Вам нужно использовать $item->Translation->name
, или, альтернативно, вы можете создать аналогичную прокси-функцию:
//lib/model/doctrine/myTable.class.php
function getName() {
return $this->Translation->name;
}
Эта функция может быть вызвана явно, как $item->getName()
, или неявно через __get()
as $item->name
;
Я предполагаю, что вы используете поведение doctrine для хранения переводов — никогда не использовали его, поэтому ваш пробег может отличаться.
Комментарии:
1. Хорошо, правильная вещь, которую нужно сделать, это вообще не выполнять leftJoin, потому что перевод обрабатывается автоматически. Спасибо за ваш ответ.