>[info]模型(model)文件通常被放在 app/model 目录下
你也可以将其放置于任何地方,只要能够通过 composer.json 配置文件自动加载即可。
所有的 Eloquent 模型(model)都继承自 `Illuminate\Database\Eloquent\Model `类。
### 创建一个 Article 模型类(model class)
~~~
<?php
/**
* Article model
*/
use Illuminate\Database\Eloquent\Model;
// 默认的规则是:类名的复数形式用来当做数据表的表名,除非明确指定另一个名称。
class Article extends Model
{
//
}
~~~
### 数据表的表名
注意,我们并没有告诉 `Eloquent` 将 `Article 模型(model)`和哪个数据表进行关联。
>[danger]默认的规则是:`类名的复数形式`用来当做数据表的表名,除非明确指定另一个名称。所以,在这种情况下,Eloquent 将自动推导出 Article 模型与 articles 数据表关联。
你可以在模型(model)中定义一个 table 属性,用来指定另一个数据表名称:
~~~
<?php
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
/**
* 指定数据表
* @var string
*/
protected $table = 'article';
}
~~~
### 主键
`Eloquent` 假定每一个数据表中都存在一个命名为 id 的列作为主键。你可以通过定义一个 `$primaryKey` 属性来明确指定一个主键。
### 时间戳
>[info]默认情况下,`Eloquent` 期望数据表中存在 `created_at` 和 `updated_at` 字段。如果你不希望由 `Eloquent` 来管理这两个字段,可以在模型(model)中将 `$timestamps` 属性设置为 false:
~~~
public $timestamps = false;
~~~
>[info]如果你需要定制时间戳的格式,可以通过在模型(model)中设置 $dateFormat 属性来实现。这个属性决定了日期属性如何在数据库中存储,也决定当模型(model)被序列化为数组 或者 JSON 格式时日期属性的格式:
~~~
protected $dateFormat = 'U';
~~~