您现在的位置是: 网站首页> PHP> Laravel Laravel
Laravel 中多对多关联模型方法使用get()报错
Smile 2019-08-23 01:38:36 PHP Laravel 阅读:1893
简介今天用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)