CakePHP:绑定模型不起作用

时间:2010-11-24 11:44:24

标签: cakephp

我有用户HABTM专业。 在用户编辑中,有一个专业的复选框列表。 当我在用户模型中定义HABTM关系时,它正在工作。 但由于这种关系正在中断其他功能,我将其删除并将其放入用户控制器

$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表中创建行。

有什么想法吗?

1 个答案:

答案 0 :(得分:7)

bindModel的默认行为是针对一个find操作存在,然后恢复为默认关联。您可能认为save操作不会触发此操作,但如果您使用Cake's count-caching feature,或执行afterSave回调执行find的行为,则可能出错

尝试传递false作为Model::bindModel来电的第二个参数。这将使您的动态绑定持续到请求的持续时间。您可以在saveAll完成后通过调用Model::resetAssociations明确重置关联。