【问题标题】:Change and configure of App\User to a new directory将 App\User 更改并配置到新目录
【发布时间】:2016-04-22 11:27:27
【问题描述】:

这个问题有很多问题。但解释永远不完整。应采取哪些步骤将文件 App\User 移动到 App\Entities\User

我已经安装了 Laravel 5.2,并且我已经将默认的 App\User (app/User.php) 移动到文件夹 App\Entities,因此将 User.php 文件中的命名空间更改为命名空间 App\Entities;因此,要访问用户模型,我必须使用 App\Entities\User 我还在 config\auth.php 中更改了此设置

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

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

大多数包都无法使用这个新目录的问题,所以我想知道我是否缺少其他设置。例如我已经安装了包 tymondesigns/jwt-auth 但现在我收到了这个错误:

ReflectionException in Container.php line 738:
Class App\User does not exist

包无法找到 App\Entities\User 并使用默认的 App\User 我认为在这个文件中包试图加载用户模型 [ vendor\tymon\src\Providers\JWTAuthServiceProvider.php ]

$this->app['Tymon\JWTAuth\Providers\User\UserInterface'] = function ($app) {
    return $app['tymon.jwt.provider.user'];
};

该包有一个 config.php 文件,但设置也不起作用;

/*
|--------------------------------------------------------------------------
| User Model namespace
|--------------------------------------------------------------------------
|
| Specify the full namespace to your User model.
| e.g. 'Acme\Entities\User'
|
*/

'user' => 'App\Entities\User',

【问题讨论】:

  • 你为什么要改变你的 laravel 模型的位置?

标签: php laravel laravel-5.2


【解决方案1】:

Laravel 5 使用 PSR-4 自动加载器,因此只需将模型移动到另一个目录并更改所有模型中的命名空间。

之后,运行composer dumpautoload -o,一切都会正常。

如果运行命令后你的包不起作用,请尝试在包中使用User模型的完整命名空间:

'user' => '\App\Entities\User',

另外,更改config\auth.php 中的命名空间(感谢@user5500750):

'model' => App\Entities\User::class,

【讨论】:

  • config\auth.php 中还有一个用户模型命名空间的设置也需要更新。
  • 谢谢,我已将此添加到我的答案中。现在一切正常吗?
猜你喜欢
  • 2015-07-22
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多