当我创建一个用户并尝试为其附加角色时,我会收到下面引用的错误。如何修复代码?
调用未定义的方法Illuminate\Database\Query\Builder::attachRole((
public function store(Request $request)
{
$this->validate($request,[
'name' => 'required',
'email' => 'required|email|unique:users,email',
'password' => 'required|same:confirm-password',
'image'=>'required|image|mimes:png,jpg,jpeg|max:1000',
'roles' => 'required',
]);
$input=$request->all();
$input['password'] = Hash::make($input['password']);
if($request->file('image')){
$image=$request->file('image');
if($image->isValid()){
$fileName=time().'-'.str_slug($input['name'],"-").'.'.$image->getClientOriginalExtension();
$image_path=public_path('profile/'.$fileName);
//Resize Image
Image::make($image)->save($image_path);
$input['image']=$fileName;
}
}
$user = User::create($input);
foreach ($request->input('roles') as $key => $value) {
$user->attachRole($value);
}
flashy()->success('User created successfully!');
return redirect()->route('users.index');
}
问题显然是您在用户模型上调用了一个尚未定义的方法。无论您使用哪个角色权限包,都应该为您提供一个Trait,以便添加到您的用户模型中。
如果您使用的是空间角色权限包,请将use HasRoles;
添加到用户模型中,以便Trait方法可用于用户模型。
更多详细信息,请点击此处https://docs.spatie.be/laravel-permission/v3/basic-usage/basic-usage/
放入用户模型(使用LaratrustUserTrait;(