我使用TranslatableBehavior
函数创建了一个afterFind()
来修改我的输出,它可以按照我想要的方式工作,但仅限于主要结果。当我将模型调用为包含在另一个模型中时,回调函数不会激活。
我的结构是这样的:
Category hasMany CategoryDynamic (dynamic table contains the translations).
Category hasMany Item
Item hasMany ItemDynamic (again, here are the item translations)
Category
和Item
都具有可翻译行为。当我进行以下查询时:
$current = $this->Category->find('first', array(
'conditions' => array('Category.id' => $root),
'contain' => array(
'CategoryDynamic',
'Item' => array(
'ItemDynamic'
),
),
));
调用类别,而不是项目。有没有办法让我的工作包含?
答案 0 :(得分:1)
只有主模型(在您的情况下为Category
)才会触发回调。
不幸的是,如果你想为其他人触发回调,你需要运行单独的查询。
答案 1 :(得分:0)
请指定其他型号的字段。
如果您在可包含的问题中使用TranslateBehavior,请务必为查询设置“字段”键。否则,最终可能会生成无效的SQL。
http://book.cakephp.org/2.0/en/core-libraries/behaviors/translate.html