行为回调并包含冲突

时间:2014-02-21 12:41:28

标签: cakephp

我使用TranslatableBehavior函数创建了一个afterFind()来修改我的输出,它可以按照我想要的方式工作,但仅限于主要结果。当我将模型调用为包含在另一个模型中时,回调函数不会激活。

我的结构是这样的:

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'
        ),
    ),
));

调用类别,而不是项目。有没有办法让我的工作包含?

2 个答案:

答案 0 :(得分:1)

只有主模型(在您的情况下为Category)才会触发回调。

不幸的是,如果你想为其他人触发回调,你需要运行单独的查询。

答案 1 :(得分:0)

请指定其他型号的字段。

如果您在可包含的问题中使用TranslateBehavior,请务必为查询设置“字段”键。否则,最终可能会生成无效的SQL。

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

相关问题