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

jasonwilson's avatar

Rename User.php - Roles and Permissions (Laravel 5.3)

Greetings

My apologies in advanced if this question has already been asked, as I’m still getting up to speed with learning Laravel… But I was just wondering if it is possible to rename the ‘app\User.php’ file to something else? For example, can I rename ‘app\User.php’ to ‘app\Member.php’?

The reason for my question, is that I have been following the ‘ACL in Laravel: Roles and Permissions’ lesson (https://laracasts.com/series/whats-new-in-laravel-5-1/episodes/16), but I was using a fresh installation of Laravel 5.3 instead of Laravel 5.1 (which was used in the tutorial). While I had no issue with the lesson (all worked as per the tutorial) - I thought I would try and rename ‘app\User.php’ to ‘app\Member.php’ after the lesson to see what happens…

Essentially, when I rename the file – the application stopped working and subsequently generated several errors… Consequently, I’m struggling to identify why this is so…

I’m interested to know if Laravel is designed, whereby you can rename the ‘app\User.php’ file… And if it can be renamed – what is to correct way to do so… This is more curiosity than anything else.

I have pasted my code below for your reference. Thanks in advance for your assistance…

\App\Member

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class Member extends Authenticatable
{
    use Notifiable;

    protected $table = 'users';

    protected $fillable = [
        'name', 'email', 'password',
    ];

     protected $hidden = [
        'password', 'remember_token',
    ];

    public function roles() {
    return $this->belongsToMany(Role::class);
  }

  public function assignRole($role) {
    return $this->roles()->save(
      Role::whereName($role)->firstOrFail()
    );
  }

  public function hasRole($role) {
    if (is_string($role)) {
      return $this->roles->contains('name', $role);
    }
    return !! $role->intersect($this->roles)->count();
  }

}

\App\Permission

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Permission extends Model
{
  /**
   * We have a Role object, and we what to know what
   * permissions are associated with this role
   * (i.e. a role relationship can Belongs-to-Many Permissions)
   */
  public function roles() {
    return $this->belongsToMany(Role::class);
  }
}

\App\Role

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Role extends Model
{
  /**
   *
   * Which Roles have the right to take (i.e. have
   * permission) this action...
   */
  public function permissions() {
    return $this->belongsToMany(Permission::class);
  }

  /**
   *
   * The Role to give permission to do
   * the task (accept Permission Object)...
   */
  public function givePermissionTo(Permission $permission) {
    return $this->permissions()->save($permission);
  }
}

\App\Providers\AuthServiceProvider

<?php

namespace App\Providers;

use App\Permission;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        'App\Model' => 'App\Policies\ModelPolicy',
    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot() {
      $this->registerPolicies();

      /**
       * Register any application authentication / authorization services.
       *
       * @param  \Illuminate\Contracts\Auth\Access\Gate $gate
       * @return void
       */

        foreach ($this->getPermissions() as $permission) {
          Gate::define($permission->name, function ($user) use ($permission) {
            return $user->hasRole($permission->roles);
          });
        }
      }


      protected function getPermissions() {
      try {
        return Permission::with('roles')->get();

      } catch (\Exception $e) {
        return [];
      }
    }
}

\config\auth.php

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Authentication Defaults
    |--------------------------------------------------------------------------
    |
    | This option controls the default authentication "guard" and password
    | reset options for your application. You may change these defaults
    | as required, but they're a perfect start for most applications.
    |
    */

    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],

    /*
    |--------------------------------------------------------------------------
    | Authentication Guards
    |--------------------------------------------------------------------------
    |
    | Next, you may define every authentication guard for your application.
    | Of course, a great default configuration has been defined for you
    | here which uses session storage and the Eloquent user provider.
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | Supported: "session", "token"
    |
    */

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | User Providers
    |--------------------------------------------------------------------------
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | If you have multiple user tables or models you may configure multiple
    | sources which represent each model / table. These sources may then
    | be assigned to any extra authentication guards you have defined.
    |
    | Supported: "database", "eloquent"
    |
    */

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Member::class,
        ],

        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Resetting Passwords
    |--------------------------------------------------------------------------
    |
    | You may specify multiple password reset configurations if you have more
    | than one user table or model in the application and you want to have
    | separate password reset settings based on the specific user types.
    |
    | The expire time is the number of minutes that the reset token should be
    | considered valid. This security feature keeps tokens short-lived so
    | they have less time to be guessed. You may change this as needed.
    |
    */

    'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => 'password_resets',
            'expire' => 60,
        ],
    ],

];

0 likes
6 replies
lindstrom's avatar

Yes, you can and your changes look correct to me. Did you php artisan clear-compiled and composer dumpautoload?

And, as @rdelorier says, the error log would be useful.

jasonwilson's avatar

Thanks guys for your input - much appreciated!

I’ve tried the above link + tried ‘php artisan clear-compiled’ and ‘composer dump-autoload’, but still no luck…

Below is the error log, which will generate - once I rename ‘app\User.php’ to ‘app\Member.php’.

[2016-11-20 08:43:18] local.ERROR: exception 'PDOException' with message 'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lesson.member_role' doesn't exist' in C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Connection.php:333 Stack trace: #0 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Connection.php(333): PDO->prepare('select roles....') #1 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Connection.php(754): Illuminate\Database\Connection->Illuminate\Database{closure}(Object(Illuminate\Database\MySqlConnection), 'select roles....', Array) #2 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Connection.php(717): Illuminate\Database\Connection->runQueryCallback('select roles....', Array, Object(Closure)) #3 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Connection.php(351): Illuminate\Database\Connection->run('select roles....', Array, Object(Closure)) #4 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(1648): Illuminate\Database\Connection->select('select roles....', Array, true) #5 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(1634): Illuminate\Database\Query\Builder->runSelect() #6 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(613): Illuminate\Database\Query\Builder->get(Array) #7 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Relations\BelongsToMany.php(219): Illuminate\Database\Eloquent\Builder->getModels() #8 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Relations\BelongsToMany.php(112): Illuminate\Database\Eloquent\Relations\BelongsToMany->get() #9 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(2697): Illuminate\Database\Eloquent\Relations\BelongsToMany->getResults() #10 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(2663): Illuminate\Database\Eloquent\Model->getRelationshipFromMethod('roles') #11 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(2607): Illuminate\Database\Eloquent\Model->getRelationValue('roles') #12 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(3423): Illuminate\Database\Eloquent\Model->getAttribute('roles') #13 C:\Temp\Laravel5-3 (Roles and Permissions)\app\Member.php(73): Illuminate\Database\Eloquent\Model->__get('roles') #14 C:\Temp\Laravel5-3 (Roles and Permissions)\app\Providers\AuthServiceProvider.php(42): App\Member->hasRole(Object(Illuminate\Database\Eloquent\Collection)) #15 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Auth\Access\Gate.php(265): App\Providers\AuthServiceProvider->App\Providers{closure}(Object(App\Member)) #16 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Auth\Access\Gate.php(243): Illuminate\Auth\Access\Gate->callAuthCallback(Object(App\Member), 'edit_forum', Array) #17 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Auth\Access\Gate.php(199): Illuminate\Auth\Access\Gate->raw('edit_forum', Array) #18 C:\Temp\Laravel5-3 (Roles and Permissions)\storage\framework\views\617e340f853f9ecc836adc661ddc9f1118c6a513.php(18): Illuminate\Auth\Access\Gate->check('edit_forum') #19 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\Engines\PhpEngine.php(42): include('C:\Temp\Laravel...') #20 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\Engines\CompilerEngine.php(59): Illuminate\View\Engines\PhpEngine->evaluatePath('C:\Temp\Laravel...', Array) #21 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\View.php(149): Illuminate\View\Engines\CompilerEngine->get('C:\Temp\Laravel...', Array) #22 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\View.php(120): Illuminate\View\View->getContents() #23 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\View.php(85): Illuminate\View\View->renderContents() #24 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Http\Response.php(45): Illuminate\View\View->render() #25 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\symfony\http-foundation\Response.php(201): Illuminate\Http\Response->setContent(Object(Illuminate\View\View)) #26 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Router.php(1042): Symfony\Component\HttpFoundation\Response->__construct(Object(Illuminate\View\View)) #27 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Router.php(643): Illuminate\Routing\Router->prepareResponse(Object(Illuminate\Http\Request), Object(Illuminate\View\View)) #28 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Routing\Router->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #29 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Middleware\SubstituteBindings.php(41): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #30 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure)) #31 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #32 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken.php(65): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #33 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure)) #34 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #35 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\Middleware\ShareErrorsFromSession.php(49): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #36 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure)) #37 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #38 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Session\Middleware\StartSession.php(64): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #39 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure)) #40 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #41 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse.php(37): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #42 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure)) #43 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #44 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\EncryptCookies.php(59): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #45 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure)) #46 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #47 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(104): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #48 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Router.php(644): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #49 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Router.php(618): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request)) #50 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Router.php(596): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request)) #51 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(267): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) #52 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http{closure}(Object(Illuminate\Http\Request)) #53 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #54 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure)) #55 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #56 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(104): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #57 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(149): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #58 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request)) #59 C:\Temp\Laravel5-3 (Roles and Permissions)\public\index.php(54): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request)) #60 {main}

Next exception 'Illuminate\Database\QueryException' with message 'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lesson.member_role' doesn't exist (SQL: select roles.*, member_role.member_id as pivot_member_id, member_role.role_id as pivot_role_id from roles inner join member_role on roles.id = member_role.role_id where member_role.member_id = 1)' in C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Connection.php:761 Stack trace: #0 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Connection.php(717): Illuminate\Database\Connection->runQueryCallback('select roles....', Array, Object(Closure)) #1 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Connection.php(351): Illuminate\Database\Connection->run('select roles....', Array, Object(Closure)) #2 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(1648): Illuminate\Database\Connection->select('select roles....', Array, true) #3 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(1634): Illuminate\Database\Query\Builder->runSelect() #4 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(613): Illuminate\Database\Query\Builder->get(Array) #5 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Relations\BelongsToMany.php(219): Illuminate\Database\Eloquent\Builder->getModels() #6 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Relations\BelongsToMany.php(112): Illuminate\Database\Eloquent\Relations\BelongsToMany->get() #7 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(2697): Illuminate\Database\Eloquent\Relations\BelongsToMany->getResults() #8 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(2663): Illuminate\Database\Eloquent\Model->getRelationshipFromMethod('roles') #9 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(2607): Illuminate\Database\Eloquent\Model->getRelationValue('roles') #10 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(3423): Illuminate\Database\Eloquent\Model->getAttribute('roles') #11 C:\Temp\Laravel5-3 (Roles and Permissions)\app\Member.php(73): Illuminate\Database\Eloquent\Model->__get('roles') #12 C:\Temp\Laravel5-3 (Roles and Permissions)\app\Providers\AuthServiceProvider.php(42): App\Member->hasRole(Object(Illuminate\Database\Eloquent\Collection)) #13 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Auth\Access\Gate.php(265): App\Providers\AuthServiceProvider->App\Providers{closure}(Object(App\Member)) #14 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Auth\Access\Gate.php(243): Illuminate\Auth\Access\Gate->callAuthCallback(Object(App\Member), 'edit_forum', Array) #15 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Auth\Access\Gate.php(199): Illuminate\Auth\Access\Gate->raw('edit_forum', Array) #16 C:\Temp\Laravel5-3 (Roles and Permissions)\storage\framework\views\617e340f853f9ecc836adc661ddc9f1118c6a513.php(18): Illuminate\Auth\Access\Gate->check('edit_forum') #17 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\Engines\PhpEngine.php(42): include('C:\Temp\Laravel...') #18 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\Engines\CompilerEngine.php(59): Illuminate\View\Engines\PhpEngine->evaluatePath('C:\Temp\Laravel...', Array) #19 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\View.php(149): Illuminate\View\Engines\CompilerEngine->get('C:\Temp\Laravel...', Array) #20 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\View.php(120): Illuminate\View\View->getContents() #21 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\View.php(85): Illuminate\View\View->renderContents() #22 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Http\Response.php(45): Illuminate\View\View->render() #23 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\symfony\http-foundation\Response.php(201): Illuminate\Http\Response->setContent(Object(Illuminate\View\View)) #24 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Router.php(1042): Symfony\Component\HttpFoundation\Response->__construct(Object(Illuminate\View\View)) #25 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Router.php(643): Illuminate\Routing\Router->prepareResponse(Object(Illuminate\Http\Request), Object(Illuminate\View\View)) #26 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Routing\Router->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #27 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Middleware\SubstituteBindings.php(41): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #28 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure)) #29 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #30 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken.php(65): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #31 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure)) #32 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #33 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\Middleware\ShareErrorsFromSession.php(49): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #34 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure)) #35 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #36 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Session\Middleware\StartSession.php(64): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #37 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure)) #38 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #39 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse.php(37): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #40 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure)) #41 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #42 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\EncryptCookies.php(59): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #43 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure)) #44 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #45 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(104): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #46 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Router.php(644): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #47 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Router.php(618): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request)) #48 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Router.php(596): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request)) #49 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(267): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) #50 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http{closure}(Object(Illuminate\Http\Request)) #51 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #52 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure)) #53 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #54 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(104): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #55 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(149): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #56 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request)) #57 C:\Temp\Laravel5-3 (Roles and Permissions)\public\index.php(54): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request)) #58 {main}

Next exception 'ErrorException' with message 'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lesson.member_role' doesn't exist (SQL: select roles.*, member_role.member_id as pivot_member_id, member_role.role_id as pivot_role_id from roles inner join member_role on roles.id = member_role.role_id where member_role.member_id = 1) (View: C:\Temp\Laravel5-3 (Roles and Permissions)\resources\views\welcome.blade.php)' in C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Database\Connection.php:761 Stack trace: #0 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\Engines\PhpEngine.php(44): Illuminate\View\Engines\CompilerEngine->handleViewException(Object(Illuminate\Database\QueryException), 1) #1 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\Engines\CompilerEngine.php(59): Illuminate\View\Engines\PhpEngine->evaluatePath('C:\Temp\Laravel...', Array) #2 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\View.php(149): Illuminate\View\Engines\CompilerEngine->get('C:\Temp\Laravel...', Array) #3 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\View.php(120): Illuminate\View\View->getContents() #4 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\View.php(85): Illuminate\View\View->renderContents() #5 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Http\Response.php(45): Illuminate\View\View->render() #6 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\symfony\http-foundation\Response.php(201): Illuminate\Http\Response->setContent(Object(Illuminate\View\View)) #7 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Router.php(1042): Symfony\Component\HttpFoundation\Response->__construct(Object(Illuminate\View\View)) #8 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Router.php(643): Illuminate\Routing\Router->prepareResponse(Object(Illuminate\Http\Request), Object(Illuminate\View\View)) #9 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Routing\Router->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #10 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Middleware\SubstituteBindings.php(41): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #11 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure)) #12 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #13 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken.php(65): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #14 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure)) #15 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #16 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\View\Middleware\ShareErrorsFromSession.php(49): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #17 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure)) #18 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #19 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Session\Middleware\StartSession.php(64): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #20 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure)) #21 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #22 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse.php(37): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #23 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure)) #24 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #25 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\EncryptCookies.php(59): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #26 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure)) #27 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #28 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(104): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #29 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Router.php(644): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #30 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Router.php(618): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request)) #31 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Router.php(596): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request)) #32 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(267): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) #33 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http{closure}(Object(Illuminate\Http\Request)) #34 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #35 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure)) #36 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #37 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(104): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #38 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(149): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #39 C:\Temp\Laravel5-3 (Roles and Permissions)\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request)) #40 C:\Temp\Laravel5-3 (Roles and Permissions)\public\index.php(54): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request)) #41 {main}

lindstrom's avatar
Level 15

Now that you've changed User to Member, the convention assumes your pivot table will be member_role rather than role_user. Do you have that table? The error simply states member_role doesn't exist.

Create a migration with a table named member_role and a model to go with it called MemberRole. These will replace the migration for role_user and the RoleUser model.

lindstrom's avatar

@jekinney yes, no model required. Force of habit from php artisan make:model Model -m. And +1 for linking the docs.

Please or to participate in this conversation.