2011-11-23 65 views
1

我用下面的代碼檢索店的標籤:

$tags = $this->getObject()->get('Tag'); 

$this->getObject()返回Shop對象,->get('Tag')返回數組Tag與本店相關的物品。

以下是我的數據庫安排方式:1 Shop = 1或更多Tag和1 Tag = 1 Tag_Translation

我想要做的是檢索,而不是Tag對象的數組,而Tag對象的數組與他們的翻譯(換句話說,一種JOIN)。

這怎麼可能,保持相同的語法?非常感謝你,我是新來的學說和一般的ORM,我不會有任何問題與MySQL,但在這裏做...

+0

我認爲你必須編寫一些dql來實現這一點。這裏是文檔:http://www.doctrine-project.org/docs/orm/2.1/en/reference/dql-doctrine-query-language.html – greg0ire

回答

0

您可能會解決這個問題這樣

一),您可以調用標籤模型的功能,當你需要翻譯

$tag->getTagTranslation() 

b)或可以覆蓋你的店的getTag()函數,並建立與DQL自己的查詢爲@ greg0ire建議,在一次

去取翻譯和標籤
public function getTag(){ 
    return Doctrine_Query::create() 
      ->from("Tag t") 
      ->leftJoin("t.TagTranslation tt") 
      ->addWhere("t.shop_id = ?", $this->getId()) 
} 

(當然你可以命名一個新的功能,例如getTagsWithTranslation())

這個假設,你已經建立了一個具有適當關係的schema.yml!