CakePHP:绑定模型不起作用
问题描述:
我有用户HABTM专业。 在用户编辑中,有一个专业复选框列表。 当我在用户模型中定义HABTM关系时,它正在工作。 但当这种关系中断其他功能我删除,并把这个用户控制器CakePHP:绑定模型不起作用
$this->User->bindModel(
array(
'hasAndBelongsToMany' =>
array(
'Profession' =>
array(
'className' => 'Profession',
'joinTable' => 'professions_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'profession_id',
'unique' => true,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
)
)
);
该绑定函数的返回值也是如此。
现在,当我调用$ this-> User-> saveAll($ this-> data)时,不再在professions_users表中创建行。
有什么想法?
答
bindModel
的默认行为是存在一个find
操作,然后恢复为默认关联。您可能认为save
操作不会触发此操作,但如果您使用Cake's count-caching feature或具有afterSave
回调的行为执行find
,则可能是错误的。
尝试通过false
作为Model::bindModel
调用的第二个参数。这将使您的动态绑定持续到请求的持续时间。通过调用Model::resetAssociations
完成saveAll
后,您始终可以显式重置关联。
第二个参数“false”起作用。你是天才! :d – 2010-11-24 19:00:45