Php symfony getTable where子句作为对象

Php symfony getTable where子句作为对象,php,symfony1,doctrine,Php,Symfony1,Doctrine,我的表格正在使用翻译模块 // 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') ->

我的表格正在使用翻译模块

// 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();
}

但是my getName()始终为空…

您需要使用
$item->Translation->name
,或者您可以创建类似的代理函数:

//lib/model/doctrine/myTable.class.php
function getName() {
  return $this->Translation->name;
}
此函数可以像
$item->getName()
那样显式调用,也可以像
$item->name
那样通过
\uu get()
隐式调用


我猜您正在使用doctrine的行为来存储翻译-从未使用过,因此您的里程可能会有所不同。

好的,正确的做法是根本不执行leftJoin,因为翻译是自动处理的。谢谢你的回答。