【问题标题】:Laravel 7.11.0 Class '\App\Models\User' not found未找到 Laravel 7.11.0 类“\App\Models\User”
【发布时间】:2020-05-14 07:05:41
【问题描述】:

我不太确定这里发生了什么。我遵循了 spatie/laravel 权限的所有安装说明。我不断收到此错误,似乎无法在任何地方找到任何相关帮助。

错误信息

ErrorException:
Class '\App\Models\User' not found

  at /home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php:183
  at Facade\Ignition\ErrorPage\IgnitionWhoopsHandler->handle()
     (/home/jlevan/cdb/vendor/filp/whoops/src/Whoops/Run.php:296)
  at Whoops\Run->handleException()
     (/home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php:363)
  at Illuminate\Foundation\Exceptions\Handler->renderExceptionWithWhoops()
     (/home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php:342)
  at Illuminate\Foundation\Exceptions\Handler->renderExceptionContent()
     (/home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php:326)
  at Illuminate\Foundation\Exceptions\Handler->convertExceptionToResponse()
     (/home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php:305)
  at Illuminate\Foundation\Exceptions\Handler->prepareResponse()
     (/home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php:210)
  at Illuminate\Foundation\Exceptions\Handler->render()
     (/home/jlevan/cdb/app/Exceptions/Handler.php:53)
  at App\Exceptions\Handler->render()
     (/home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php:119)
  at Illuminate\Foundation\Bootstrap\HandleExceptions->renderHttpResponse()
     (/home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php:96)
  at Illuminate\Foundation\Bootstrap\HandleExceptions->handleException()
     (/home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php:130)
  at Illuminate\Foundation\Bootstrap\HandleExceptions->handleShutdown() 

auth.php

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

app\Models\User.php

<?php

namespace App\Models;

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

class User extends Authenticatable
{
    use HasRoles;
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}

我不确定我错过了什么。我正在尝试使用 Spatie/laravel-permissions 并有一个简单的 - home.blade.php

 @can('edit articles')
   I can Edit!
 @endcan

【问题讨论】:

  • 不知道为什么您将用户模型移动到模型文件夹中,应用程序之前是否工作(登录/注册等),没有 Spatie 包?
  • 没有。我已经阅读了另一篇关于将模型移动到模型目录的文章,其中包含一些相关信息。从技术上讲,目前我的 app\User.php 和 app\Models\User.php 都有正确的命名空间。无论我更改要使用的 auth.php 文件,它仍然会出错
  • 是的,我有。我实际上在 app\User.php 和 app\Models\User.php 中有它,并且都有正确的命名空间
  • 如果您将模型移动到新文件夹,请确保通过运行 composer dump-autoload 更新自动加载器
  • 好吧,从技术上讲,我上面的评论是不正确的。是的,它会让我注册和登录,但是当我到达 home.blade.php 尝试执行 @can('edit article') 时,它会生成错误

标签: php laravel laravel-7 laravel-permission


【解决方案1】:

App\Models\User 模型中的命名空间应该是:

namespace App\Models;

在任何使用 User 模型的模型或类中,包括 app/config/auth.php,更改:

use App\User;
  // change to
use App\Models\User;

做:

composer dump-autoload
artisan optimize:clear

由于您使用的是Spatie Permissions,因此以下步骤很重要但很容易错过(我花了一段时间才弄明白):

在数据库表 model_has_permissions.model_typemodel_has_roles.model_type 中,将所有 “App\User” 实例替换为 “应用\模型\用户”

【讨论】:

  • 另外,如果您使用 Spatie Media,或者基本上任何具有用于识别模型的列的数据库表,您需要使用新的命名空间更新它们。
【解决方案2】:

尝试运行composer dump-autoload -o

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-12-28
  • 2017-06-07
  • 2017-10-04
  • 2021-03-11
  • 2017-05-14
  • 2019-09-25
  • 2021-01-08
  • 1970-01-01
相关资源
最近更新 更多