Как удалить все роли пользователей в 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(); дает мне именно то, что я хочу.


person Bob0101    schedule 28.07.2010    source источник


Ответы (3)


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

foreach ($user->roles->find_all() as $role)
{
    $user->remove('roles', $role);
}
person slacker    schedule 31.07.2010
comment
Спасибо. Работает отлично :) Тем не менее, я не удержался от удаления ролей без ORM DB::delete('roles_users')-›where('user_id','=',$id)-›execute(); - person Bob0101; 02.08.2010

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

$user->remove('roles');
person SandWyrm    schedule 17.06.2011

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

person biakaveron    schedule 27.08.2010