Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

birdietorerik's avatar

Why this error

Hi!

Havent change anything here, but today i get this error message

Error
Non-static method App\Models\Role::getroles() cannot be called statically
http://127.0.0.1:8000/roller

This is the line, it doent want ???

 $roller = Role::getroles($userid);

This my Controller

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Models\User;
use App\Models\Role;
use Session;
use Illuminate\Validation\Rule;
use App\Http\Resources\Admin\RoleResource;
use App\Http\Requests\StoreRoleRequest;
use App\Http\Requests\UpdateRoleRequest;

class SelectroleController extends Controller
{
    public function index()
    {
        
        $userid = auth()->user()->id;
        $roller = Role::getroles($userid);

        return view('roller.index', compact('roller'));
   
    }

    public function getcurrentRole()
    {
      return auth()->user()->role_id;
    } 

    public function selectrole(Request $request)
    {
        // Get selected role and startlist 
        $role_id = $request->valgrolle;

        // Store default role on user
        $storedefrole = User::storeDefRoleUser($role_id);

        var_dump("ROLLER 2");
        
        switch ($role_id) {
            case 1:
              $this->redirectTo = 'admin/dashboard';
              break;
            case 2:
              $this->redirectTo = 'admin/dashboard';
              break;
            case 3:
              $this->redirectTo = 'admin/dashboard';
              break;
            case 4:
              $this->redirectTo = 'admin/dashboard';
              break;
            case 5:
              $this->redirectTo = 'admin/starter';
              break;
            case 6:
              $this->redirectTo = 'admin/marshal';
              break;
            case 7:
              $this->redirectTo = 'admin/dashboard';
              break;
            case 8:
              $this->redirectTo = 'admin/dashboard';
              break;
            case 9:
              $this->redirectTo = 'admin/player';
              break;
            case 10:
                $this->redirectTo = 'admin/tester';
                break;  
            default:
               $this->redirectTo = 'admin/tester';
          }

          
          return redirect()->to($this->redirectTo);
    }

    
}
0 likes
2 replies
automica's avatar
automica
Best Answer
Level 54

I assume you have

public function getroles($userid)
{

}

in your roles class.

you need to make it static if you want to call it that way

public static function getroles($userid)
{

}
automica's avatar

your method names are a bit funky BTW.

follow convention is best to use camelCase.

eg

  • getRoles
  • selectRole
  • selectRoleController
1 like

Please or to participate in this conversation.