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,因为翻译是自动处理的。谢谢你的回答。