php - Laravel 5 - 将用户模型移动到应用程序/模型导致自动加载问题

标签 php laravel laravel-5 autoload laravel-spark

处理包含两个用户模型的继承 Laravel Spark 项目。

一个是 App 目录中的标准 Spark 模型,另一个在 App/Models 中。我结合了这两个模型并更新了 auth.php 以引用模型目录中的用户模型,但 composer dump-autoload 说它找不到应用程序/用户模型。

我怎样才能告诉自动加载器用户模型已经不存在了,但是 而不是在 Models 目录中?

编辑:

我已将命名空间更改为 App/Models 但仍然收到错误:

class_parents(): Class App\User does not exist and could not be loaded

在运行 dump-autload 时在我的终端中

第二次编辑:

已修复,没有意识到 namespace 被引用了这么多。在 App\User 上找到并替换并解决了问题。

最佳答案

标准的 Laravel 安装将通过简单地更改命名空间来工作,就像其他人提到的那样;但是 Laravel Spark 引用了 UserTeam 模型,因此仅更改 namespace 是行不通的。

你不应该编辑 vendor/laravel/spark-aurelius 中的任何文件(aurelius 代号将根据你的版本而有所不同)因为这些更改不会被跟踪。

使用 Spark,您应该将以下行添加到您的 app/Providers/SparkServiceProvider.php 中:

public function register()
{
    Spark::useUserModel('App\Models\User');
    Spark::useTeamModel('App\Models\Team');
}

您可以设置自己的自定义 App\Models 目录,而不是使用上面的示例。

最后,您需要更新对模型所做的任何引用,例如将 Controller 从 use App\User 更新为 use App\Models\User

来源:Laravel Spark 6.0 Customization

2020 年 1 月 5 日更新:记得还要将 .env 中的 STRIPE_MODELBRAINTREE_MODEL 值更新到新命名空间。

Laravel Spark 9.0 移除了对 Braintree 的支持,因此您只需要在 9.0 中更新 CASHIER_MODEL

2020 年 12 月 21 日更新:Laravel 8.x 现在默认将所有模型保存在 app\Models 目录中。即使您使用的是旧版本的 Laravel(例如 6.x)但使用的是 Laravel Spark 11,您也不需要执行上述任何操作。 Laravel Spark 11 将假定您的模型位于 app\Models 中。

关于php - Laravel 5 - 将用户模型移动到应用程序/模型导致自动加载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40764287/

相关文章:

php - 在 Laravel 5 中将多个参数传递给 Controller

php - 使用 MySQLi 列出数据库中的所有表

php - 保留票务系统问题的记录 ID

php - Eloquent 存储表单数据

php - 在 Laravel 中将值从 url 传递到 Controller

php - 上传图片时无法在 laravel 5.1 中创建目录?

javascript - 用于多个字段的单个 jQuery 图像选择器

php - 自定义 is_unique_logical_key - 验证还是回调?

php - Laravel 自定义 created_at 和 updated_at

php - 找不到请求的 URL - Laravel 5