【问题标题】:Laravel Migration Table NamingLaravel 迁移表命名
【发布时间】:2015-11-25 04:39:50
【问题描述】:

我刚刚使用 Artisan CLI 为名为 story 的模型进行了迁移:

php artisan make:model Story

它创建了一个迁移文件,该文件创建了一个名为stories 而不是storys 的表。尽管它在语法上是正确的,但它让我想知道它还能做出哪些非常规的更正。换句话说,CLI 遵循哪些规则来创建迁移文件?此外,这些“正确”名称是否适用于列名?多态tags 表的迁移表是taggable_id 还是tagable_id?请记住,Eloquent 默认不期望 taggable_id

【问题讨论】:

    标签: php laravel-5 database-migration


    【解决方案1】:

    这正是您的问题,您可以在此链接中找到原因。

    https://laracasts.com/discuss/channels/general-discussion/makemodel-also-creates-a-migration

    Laravel 遵循简单的命名约定。表名应该是模型名的复数。但是如果你想指定表名,你可以在模型中添加这个属性

    protected $table = 'myclients'
    

    【讨论】:

    • 谢谢马苏德。但是,我想知道有关表格命名的规则。
    【解决方案2】:

    根据this Eloquent 有自己的约定。例如,Travel 模型从我们的 travels 数据库表中检索和存储信息。

    但重要的一点是 Laravel 迁移不会强迫我们选择它想要的表名!

    “snake case”,类的复数名称将用作表格 name 除非明确指定另一个名称。 因此,您可以轻松地将引用表的名称更改为您想要的任何名称。

    <?php
    
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Travel extends Model 
    {
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'whatever_you_want';
    }
    

    【讨论】:

    • 感谢您的回答。我的问题是,工匠怎么会知道将“故事”变成“故事”,以及它知道要遵循的其他规则是什么?
    • @CrackingTheCode 正如我上面所说,除非您将其更改为您想要的任何内容,否则工匠会自动为表格编写复数形式的模型名称!
    • @CrackingTheCode 它有一个特殊词的字典,请参阅github.com/laravel/framework/blob/7.x/src/Illuminate/Support/… 并在引擎盖下使用 Doctrine Inflector 来获取复数形式
    猜你喜欢
    • 2015-07-05
    • 2020-02-23
    • 2018-07-18
    • 2016-03-14
    • 2016-02-26
    • 2020-06-22
    • 1970-01-01
    • 2018-12-10
    • 2018-08-20
    相关资源
    最近更新 更多