如何将 laravel 5.1 用户模型移动到 \App\Models\User?

Posted

技术标签:

【中文标题】如何将 laravel 5.1 用户模型移动到 \\App\\Models\\User?【英文标题】:How to move the laravel 5.1 User model to \App\Models\User?如何将 laravel 5.1 用户模型移动到 \App\Models\User? 【发布时间】:2016-03-02 17:01:46 【问题描述】:

是否可以告诉 Laravel 我已经移动了 User.php 模型?

Laravel 5.1

FatalErrorException in EloquentUserProvider.php line 126: 
Class '\App\User' not found

我真的不希望在 laravel 5.1 的 App 文件夹的根目录下拥有所有模型,所以我创建了一个新文件夹并将所有模型 php 文件放在其中:\App\Models

我更改了身份验证控制器以使用新的use App\Models\User; 并更正了模型文件夹中的所有模型文件..

但是当我加载页面时,我得到了上面提到的错误。

(其他模型文件当然可以正常工作,因为它是我的代码访问它们,它只是 laravel 5.1 中预构建的身份验证内容)

【问题讨论】:

【参考方案1】:

您需要修改您的Project/config/auth.php 文件 在'model'=> AppName\Models\User::class,

【讨论】:

移动类后别忘了运行 composer dump-autoload 你能解释一下这是做什么的以及为什么需要改变吗?谢谢【参考方案2】:

例如,如果您创建一个文件夹(例如 app/Models),有两种方法可以移动您的模型:

1) Laravel5 风格 = 使用 PSR4

使用命名空间 App\Models; 命名所有模型文件 使用完整的命名空间在任何地方访问您的模型,例如:\App\Models\User::find(1);

2) Laravel4 风格

使用 Composer 自动加载器加载您的模型。在 composer.json 添加:

"autoload": 
        "classmap": [
            "database",
            "app/Models"            
        ],
        ...

您不需要为模型命名。它们位于根名称空间中 在命名空间文件中,您可以通过 \User::find(1);

访问它们

补充说明:

如果您更改 User 模型的命名空间,您必须更新 config\auth.php => 'model'=> App\Models\User::class

摆脱长命名空间的最简单方法是在 php 文件的开头导入模型,例如:use App\Models\User;

链接:

https://laracasts.com/lessons/where-do-i-put-this http://ryantablada.com/post/the-repository-pattern-in-action https://laracasts.com/lessons/repositories-simplified

【讨论】:

如果我们做类似 User::find(1);并在开头定义命名空间(使用 App\User;)。还是 PSR4 吗? 为了获得最佳效果,我建议您全部完成这三个(包括额外说明),尤其是在构建完成一半并希望实施此更改时。

以上是关于如何将 laravel 5.1 用户模型移动到 \App\Models\User?的主要内容,如果未能解决你的问题,请参考以下文章

laravel-如何在 5.1 中使用 zizaco 获得具有所有角色和所有权限的用户?

Laravel 5.1 中 3 个模型之间的关系(“像多对多通过”)

将 Laravel 5 Eloquent 模型移动到它自己的目录中

Laravel 5.1 - 模型工厂错误种子

在 Laravel 5.1 中通过 AJAX 将用户输入数据从视图传递到控制器

在laravel 5.1单元测试中嘲笑hasMany关系