2011-05-10 61 views
1

我的表使用翻譯模塊symfony的getTable where子句爲對象

// 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()總是空...

回答

0

您需要使用$item->Translation->name,或者您可以創建一個類似的代理功能:通過__get()$item->name

//lib/model/doctrine/myTable.class.php 
function getName() { 
    return $this->Translation->name; 
} 

此功能可以顯式調用像$item->getName(),或含蓄;

我猜你正在使用原則的行爲來存儲翻譯 - 從未使用它,所以你的里程可能會有所不同。

+0

好的,正確的做法是根本不做左連接,因爲翻譯是自動處理的。感謝您的回答。 – jsgoupil 2011-05-10 20:25:58