laravel:Macroable.php第74行中的BadMethodCallException:方法分离不存在

时间:2016-08-10 04:27:02

标签: php laravel laravel-5 laravel-5.2

我有三张桌子

  • users
  • groups
  • group_user(处理群组中用户成员资格的数据透视表)

我正在尝试从以下组中删除用户的成员资格:

public function userDelete (Request $request, $userId)
{
    $gid = $request->group;
    $group = Group::find($gid);
    $user = User::find($userId);

    $user->groups->detach();

    // and the second method is :
    // foreach ($group->users as $user) {
    //     if ($user->pivot->user_id == $userId) {
    //         $user->detach($gid);
    //         
    //         break;
    //     }
    // }
}

我已经尝试过各种方法,但它总是会出现找不到方法detach()的错误:

  

Macroable.php第74行中的BadMethodCallException:       方法分离不存在。

1 个答案:

答案 0 :(得分:4)

当您执行 $ user-> groups-> detach()时,您会在生成的群组集合上调用 detach()

相反,您应该在关系上调用 detach()方法:

$user->groups()->detach();