Вызов неопределенного метода Illuminate \ Database \ Query \ Builder :: attachRole () - PullRequest
0 голосов
/ 26 октября 2019

Когда я создаю пользователя и пытаюсь прикрепить к нему роли, я получаю сообщение об ошибке, приведенное ниже. Как я могу исправить код?

Вызов неопределенного метода 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');

            }

1 Ответ

1 голос
/ 26 октября 2019

Очевидно, проблема в том, что вы вызываете метод в пользовательской модели, которую вы не определили. Какой бы пакет ролей-разрешений вы использовали, он должен дать вам черту для добавления к вашей модели пользователя.

Если вы используете пакет разрешений ролей в пространстве, добавьте use HasRoles; к своей модели пользователя, чтобы методы Trait моглибыть доступным для вашей модели пользователя.

Более подробную информацию можно найти здесь https://docs.spatie.be/laravel-permission/v3/basic-usage/basic-usage/

...