>[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';
~~~