Search code examples
laravelargumentsrolesregistration

Assigning the role while user registration Laravel


I'm trying to make a register page with role as a radio button(consumer, supplier, Admin) but it show me this error when I test the query in postman

Error: Class "App\Http\Models\Role" not found in file

my controller:

 public function register(Request $request)
    {
        $request->validate([
            'first_name'=>'required|string',
            'last_name'=>'required|string',
            'email'=>'required|string|unique:users',
            'password'=>'required|string|min:6',
            'phone_number'=>'required|string|min:10',
            'role_name'=>'required|string' 
        ]);
        
        $role_a = $request->role_name;
        if ($role_a  == 'صاحب متجر'){
            $role=Role::select('role_id')->where('role_name','صاحب متجر')->first();
            $user->roles()->attach($role);
            return response()->json($user);
        }
        elseif ($role_a  == 'مشتري'){
            $role=Role::select('role_id')->where('role_name','مشتري')->first();
            $user->roles()->attach($role);
            return response()->json($user);
        }
        $user=User::create([
            'first_name' => $request->first_name, 
            'last_name' => $request->last_name, 
            'email' => $request->email, 
            'password' => Hash::make($request->password), 
            'phone_number' => $request->phone_number,

        ]);

And my use statement:

use Illuminate\Http\Request;
use App\Http\Models\User;
use App\Http\Models\Role;
use Illuminate\Support\Facades\Hash;

And my route:

Route::post('/register','App\Http\Controllers\AuthController@register'); 

and this what I have in tables:

Note: I didn't use custom packages like spatie for example

Thank you for trying to help!


Solution

  • You miss adding the Request class as an argument into your method. Your method should look like this:

    public function register(Request $request)
    {
      //after validation
      $data = $request->validated();
    }
    

    Dont forget to add use Illuminate\Http\Request; in your use statement.