CakePHP: Bind Model не работает - PullRequest
       15

CakePHP: Bind Model не работает

3 голосов
/ 24 ноября 2010

У меня есть пользовательские профессии 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), строки больше не создаются в таблице profs_users.

Есть идеи?

1 Ответ

7 голосов
/ 24 ноября 2010

Поведение по умолчанию bindModel должно существовать для одной операции find, а затем вернуться к связям по умолчанию.Вы можете подумать, что операция save не вызовет этого, но если вы используете функцию кэширования счетчика Cake или Поведение с обратным вызовом afterSave, которое выполняет find, вы можете ошибаться.

Попробуйте передать false в качестве второго параметра вашего Model::bindModel вызова.Это сделает вашу привязку «на лету» последней в течение всего срока действия запроса.Вы всегда можете явно сбросить ассоциации после завершения saveAll, вызвав Model::resetAssociations.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...