Eloquent 未在 table 名称末尾自动添加 s

Eloquent not adding automatically s at the end of table name

我有一个 Lumen 应用程序。 我刚刚用这个迁移文件创建了一个新的 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 

它似乎没有在 table 名称的末尾添加通常的额外 s,并试图向 till_software 而不是 till_software 发出请求。 我还有 20 多个其他模型 运行ning 还不错,据我所知,软件的复数形式是软件。

我是不是遗漏了什么明显的东西? 我还可以加一个额外的

protected $table = 'till_softwares';

在我的模型上,但我更愿意了解我做错了什么。

感谢您的帮助。

因此 laravel 将使用 Str::plural() 查找模型名称的复数形式以查找 table 名称,因为这是标准名称。

>>> Str::plural('user')
=> "users"

所以这是 User 模型到 users table

>>> Str::plural('software')
=> "software"

但软件的复数形式是软件,所以这就是 table 名称。

如果你想使用软件,你需要按照你说的去做

protected $table = 'till_softwares';

但我会说使用标准 table 名称是最好的,所以应该是 till_software