您现在的位置是: 网站首页> PHP> Laravel Laravel

Laravel 中多对多关联模型方法使用get()报错

Smile 2019-08-23 PHP Laravel 阅读:205

简介今天用Laravel框架做后台用户多角色多对多关联获取用户的所有角色时,结果报错了,报错如 Too few arguments to function Illuminate\Support\Collection::get()

1、做好了用户与与角色模型的多对多关联,使用AdminUser模型的roles方法获取所有角色

public function edit($id)
{
        // 通过给定id获取用户
        $user = AdminUser::findOrFail($id);
        // 获取所有角色
        $roles = $user->roles;
        dd($roles);
        return view('baiye/users/edit',compact('user','roles'));
}

打印输出正常

2、可我只需获取id、name这两个字段,接着使用select方法限定获取

// 获取所有角色
$roles = $user->roles->select('id','name')->get();

在这一步遭到无情报错:Method Illuminate\Database\Eloquent\Collection::select does not exist.

3、接着不用select方法,只用get方法试试

// 获取所有角色
$roles = $user->roles->get();

还是报错:Too few arguments to function Illuminate\Support\Collection::get()

4、接着去翻了翻官方文档,发现$user->roles返回的是一个集合,而$user->roles()返回的才是查询构造器,应该这样获取

// 获取所有角色
$roles = $user->roles()->select('id','name')->get();
dd($roles);

这时打印正常输出

很赞哦! (0)

文章评论

站点信息