默认情况下,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
您可以通过在模型上定义表格属性来指定自定义表格,如下所示
<?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
在雄辩的模型中,您必须定义table name
。例如,如果我的模型被命名user
,数据库中的表被命名,user_of_application
那么我这样做
class user extends Model
{
protected $table = 'user_of_application';
}
Run Code Online (Sandbox Code Playgroud)
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
同样,由开发人员/数据库管理员决定在应用程序上下文中有意义的命名约定。
归档时间: |
|
查看次数: |
9776 次 |
最近记录: |