请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Call to undefined method Illuminate\Database\Query\Builder::diff()

报了这个错误,请大家帮我出下主意
//储存用户角色
public function storeRole(\App\AdminUser $user)
{

    $this->validate(\request(),[
        'roles'=>'required|array',
    ]);
    $roles=\App\AdminRole::findMany(\request('roles'));

    $myRoles=$user->roles();
    //dd($myRoles);
    //要增加的
    //diff方法将集合和另一个集合或原生PHP数组作比较:
    $addRoles=$roles->diff($myRoles); //得到的是与自身没有的集合
    //dd($myRoles);
    foreach ($addRoles as $role)
    {
        $user->assignRole($role);
    }

    //要删除的
    $deleteRoles=$myRoles->diff($role);
   foreach($deleteRoles as $role)
   {

       $user->deleteRole($role);
   }

    return back();
    
}

正在回答

1回答

轩脉刃 2019-05-05 23:20:56

$myRoles=$user->roles; 需要理解laravel中的model使用relation 的时候有带函数括号和没有带函数括号的区别。没有带表示返回的是对象,有带表示返回的是relation builder

0 回复 有任何疑惑可以回复我~
  • 提问者 慕设计8011436 #1
    又碰到权限不生效的问题,感谢老师的回答,这个问题已经解决了
    回复 有任何疑惑可以回复我~ 2019-05-06 11:18:05
  • 老师在laravel中对象和 relation builderd的区别在哪?以你回答的$myRoles=$user->roles; 为例子。
    回复 有任何疑惑可以回复我~ 2020-04-29 18:48:31
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号