2010-07-28 2 views
2

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

 
$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() method.

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

Спасибо. Работает отлично :) Тем не менее, я не мог удержаться от удаления ролей без ORM DB :: delete ('role_users') -> где ('user_id', '=', $ id) -> execute(); – Bob0101

-1

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

7

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

$user->remove('roles'); 
Смежные вопросы