CakePHP: при удалении пользователя удаляются пользователи, связанные с помощью ownTo - PullRequest
0 голосов
/ 19 марта 2012

Я хочу иметь возможность удалить пользователя, но у пользователя есть менеджер:

var $belongsTo = array(
        'Manager' => array(
            'className' => 'User',
            'foreignKey' => 'manager_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ),
    );

И всякий раз, когда пользователь удаляется, все его «дети» тоже удаляются.

Например, скажем, я удаляю пользователя A. Пользователь A является менеджером пользователей B, C и D. Когда A удаляется, то же самое происходит и с B, C и D, потому что они имеют A в качестве manager_id.

Итак, мой вопрос - это должно происходить? И есть ли способ, которым я могу предотвратить это?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 19 марта 2012

Прочтите книгу, это предполагаемое поведение, и вы можете остановить ее, добавив

'dependent' => false,

в массив конфигурации связей.

См. http://book.cakephp.org/1.2/en/view/78/Associations-Linking-Models-Together и выполните поиск ""на этой странице.

И я рекомендую вам использовать 2.0, если это новый проект, 1.2 уже давно устарела.

0 голосов
/ 20 марта 2012

Это была проблема ACL - совершенно неожиданная. Поскольку наши пользователи работают в древовидной структуре с менеджером, у пользователя есть поля lft и rght, которые обновляются только в afterSave. Простое решение состоит в том, чтобы отделить пользователя, установив его lft и rght на 0, но после более глубокого размышления я устанавливаю их manager_id на NULL и сохраняю его так, чтобы дерево самоорганизовалось (через afterSave).

Wow. Это было довольно проблемой.

...