我最近才开始尝试laravel,很可爱。我不明白的一件事就是laravel如何知道我的桌子我只是添加了一个模型而且模型不是确切的表名,但它是如何设法得到我的表的,
答案 0 :(得分:8)
请注意,我们没有告诉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';
请同时检查迁移中的名称,它应该与您在模型类中提到的名称相同,因为由于表名不同,使用雄辩的类函数时可能会显示错误