如何将 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 模型移动到它自己的目录中