2014-02-21 58 views
0

我做了一個TranslatableBehaviorafterFind()函數來修改我的輸出,它的工作原理是我想要的,但只對主要結果。當我將該模型調用爲另一個模型時,回調函數不會激活。行爲回調和包含衝突

我的結構是這樣的:

Category hasMany CategoryDynamic (dynamic table contains the translations). 
Category hasMany Item 
Item hasMany ItemDynamic (again, here are the item translations) 

兩個CategoryItem有可轉換行爲。當我作出以下查詢:

$current = $this->Category->find('first', array(
    'conditions' => array('Category.id' => $root), 
    'contain' => array(
     'CategoryDynamic', 
     'Item' => array(
      'ItemDynamic' 
     ), 
    ), 
)); 

它被稱爲類別,而不是項目。有沒有一種方法可以使這個工作與包含?

回答

1

只有主模型(Category在你的情況)會觸發回調。

不幸的是,如果你想觸發其他人的回調,你需要運行不同的查詢。

0

請指定其他型號的字段。

如果您在使用TranslateBehavior時遇到可疑問題,請務必爲您的查詢設置「字段」鍵。否則,您最終可能會生成無效的SQL。

http://book.cakephp.org/2.0/en/core-libraries/behaviors/translate.html

+0

我想你誤解了這個問題,我不使用默認的翻譯從CakePHP的行爲,可翻譯爲我定製的行爲和問題沒有太多做的行爲做什麼。無論如何,謝謝你的努力,戴夫提供了我需要的答案。 –