将AppUser更改并配置到新目录


Change and configure of AppUser to a new directory

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

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

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

问题是大多数程序包都无法使用这个新目录,所以我想知道是否还有其他设置我缺少。例如,我已经安装了程序包tymondsignes/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 5使用PSR-4自动加载器,因此只需将您的模型移动到另一个目录并更改所有模型中的命名空间即可。

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

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

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

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

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