laravel - Eloquent 不会在表名末尾自动添加 s
问题描述
我有一个流明应用程序。我刚刚使用此迁移文件创建了一个新的 TillSoftware 模型
Schema::create('till_softwares', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string("name", 120);
$table->timestamps();
});
但是当我只是运行这样一个简单的请求时
$softwareList = TillSoftware::all();
我收到一条错误消息
Next Illuminate\Database\QueryException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'database.till_software' doesn't exist
它似乎没有在表名末尾添加通常的额外 s 并尝试向till_software 而不是till_softwares 发出请求。我有 20 多个其他模型运行不正常,据我所知,软件的复数是软件。
我在这里遗漏了一些明显的东西吗?我仍然可以添加一个额外的
protected $table = 'till_softwares';
在我的模型上,但我更愿意了解我做错了什么。
谢谢您的帮助。
解决方案
所以 laravel 将使用Str::plural()
查找模型名称的复数来查找表名,因为这是标准的。
>>> Str::plural('user')
=> "users"
所以这是表格中的User
模型users
>>> Str::plural('software')
=> "software"
但是software的复数是software,所以就是表名。
如果你想使用软件你需要按照你说的去做
protected $table = 'till_softwares';
但我会说最好使用标准表名,所以应该是till_software
推荐阅读
- java - java - 将参数作为系统变量传递,以便使用 `System.getenv` 读取
- opencv4android - 我是否需要在 Android 上为 OpenCV 的 Java 包装器调用 Mat 的发布方法?
- python - 即使条件满足,while循环也不会中断
- c# - 将行填充到我创建的数据集中?
- r - 如何修改/删除不符合列的正则表达式模式的 R 行?
- java - 为什么我不能将信息从我的 firestore 存储到我的 java 模型类
- html - 将文件上传到特定目录时遇到问题
- python - 如何从 discord.py 消息中获取特定数据
- javascript - 将额外变量传递给具有预定义参数的函数,例如 Array.Reduce
- docker - Docker 构建在 /tmp 文件夹中占用空间