Как удалить все роли пользователя в Kohana 3

Я использую модуль ORM Auth, и мне сложно понять, как это сделать. Я пробовал это дело:

$ user = ORM:: factory ('user', $ id);
$ User->roles->delete_all();

И получил ошибку ErrorException [ Fatal Error ]: Call to undefined method Database_Query_Builder_Delete::join()

тем не мение $user->roles->find_all(); дает мне именно то, что я хочу.

3 ответа

Решение

Вместо удаления ролей из базы данных вы хотите удалить отношения между моделью пользователя и моделью ролей. Вы можете использовать ORM метод remove().

foreach ($user->roles->find_all() as $role)
{
    $user->remove('roles', $role);
}

Согласно коду версии 3.1.3.1 для класса Kohana_ORM, метод ORM "remove($alias, $far_keys=NULL)", если вы не передадите второй параметр, уничтожит все связанные записи.

$user->remove('roles');

Просто создайте заявку на эту функцию. Вы можете использовать предложенный код.

Другие вопросы по тегам