Laravel听起来像魔术

时间:2016-09-20 07:17:36

标签: php laravel laravel-5.3

我最近才开始尝试laravel,很可爱。我不明白的一件事就是laravel如何知道我的桌子我只是添加了一个模型而且模型不是确切的表名,但它是如何设法得到我的表的,

3 个答案:

答案 0 :(得分:8)

参考Eloquent Model Conventions

  

请注意,我们没有告诉Eloquent我们的Flight用于哪个表   模型。按照惯例,“蛇案”,类的复数名称将   除非明确指定其他名称,否则将用作表名。

在内部,Laravel做了类似的事情。

$table = $table ?: Str::plural($name);

因此,如果没有设置$table属性,它会自动尝试查找您的模型名称的复数。

答案 1 :(得分:1)

Laravel遵循Eloquent Classes and Tables的命名约定

来自Laravel Website | Eloquent: Getting Started

  

请注意,我们没有告诉Eloquent我们的Flight用于哪个表   模型。按照惯例,"蛇案例",类的复数名称将   除非明确指定其他名称,否则将用作表名。   因此,在这种情况下,Eloquent将假设Flight模型存储记录   在航班表中。

例如

User默认情况下会引用Mysql表users(Camel Case to Snake Case and Plural)。

NotificationsLog默认情况下会引用Mysql表notifications_logs(Camel Case to Snake Case and Plural)。

但如果您不想遵循惯例,那么您可以明确提及表格名称

EG。 如果我希望我的班级Plane应该引用数据库中的flights表,那么以下代码将起作用

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Plane extends Model
{
     /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'flights';
}

答案 2 :(得分:0)

实际上当你制作一个模型时,它会自动创建一个带有复数形式的表,你可以通过在模型中添加以下代码来改变它

protected $table= 'table_name';

请同时检查迁移中的名称,它应该与您在模型类中提到的名称相同,因为由于表名不同,使用雄辩的类函数时可能会显示错误