Laravel假设数据库表是模型名称的复数形式

Mer*_*Yet 9 laravel eloquent

默认情况下,Laravel假定数据库表是模型名称的复数形式.但是,如果我还想使用此功能,那么如果我的表名是"新闻"怎么办?我应该将其更改为"newses"还是应该使用"new"作为型号名称?

Koe*_* B. 10

如果你的模型以字母's'结尾,它将保持表名相同.在您的情况下,您的模型将news默认命名您的表.

如果您想使用其他名称,您可以使用:

protected $table = 'tablename';
Run Code Online (Sandbox Code Playgroud)

在你的模型里面.

编辑:我在我的应用程序中测试了这个.我做了一个名为的模型News.然后我创建了一个新的实例News并检索了表名:

$news = new News();
dd($news->getTable());
Run Code Online (Sandbox Code Playgroud)

它返回: news


Vij*_*ath 8

您可以通过在模型上定义表格属性来指定自定义表格,如下所示

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model
{
/**
 * The table associated with the model.
 *
 * @var string
 */
protected $table = 'my_flights';
}
Run Code Online (Sandbox Code Playgroud)

参考:https : //laravel.com/docs/5.1/eloquent

  • 下次您复制和粘贴文档中的示例时,请参考该文档,这样您就可以帮助人们自助。 (3认同)

KuK*_*KeC 6

在雄辩的模型中,您必须定义table name。例如,如果我的模型被命名user,数据库中的表被命名,user_of_application那么我这样做

class user extends Model
{
    protected $table = 'user_of_application';
}
Run Code Online (Sandbox Code Playgroud)


Jus*_*and 5

Laravel 使用“标准集”规则定义:

  • 模型是记录的单个实例
  • 集合是一条或多条记录

因此它假设表是记录的集合。

当命名法与人类语言的各种特征/陷阱发生冲突时,就会出现问题。例如,如果我有一个名为 Sheep 的模型怎么办?这是否意味着我的数据库表应该被称为“Sheeps”?

开发人员应避免使用“Gollum/Smeagol”语法。事实上,您不会想要一个名为“Newses”的表,就像我希望最终得到一个名为“Sheeps”的表一样。

最终,我使用以下方法构建迁移:

sudo php artisan make:migration create_sheep_table --create=sheep
Run Code Online (Sandbox Code Playgroud)

至于模型,您会在文档中注意到它们对“航班”有一个不同的表名称,称为“my_flights”

https://laravel.com/docs/master/eloquent#defining-models

同样,由开发人员/数据库管理员决定在应用程序上下文中有意义的命名约定。