2014-02-21 57 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的行为,可翻译为我定制的行为和问题没有太多做的行为做什么。无论如何,谢谢你的努力,戴夫提供了我需要的答案。 –