---
# System prepended metadata

title: Eloquent ORM

---

# Eloquent ORM


Active Record Pattern
任何技術宣稱有實作Active Record，須具備以下三個特性

提供與資料表互動的能力
可代表某一筆資料列
可自我進行持久保存
Eloquent
有實作Active Record，是一種ORM
ORM為Object Relationship Management，即用物件關聯的方式來管理資料庫

透過定義模型的方式，讓你輕鬆管理資料庫
一般每一個模型都指向一個表格
命名慣例
資料表格名稱
包含多筆資料
首字母小寫
複數型
Ex:users
模型名稱
代表一筆資料
首字母大寫
單數型
Ex:User
不按照命名慣例就要做更多的設定做為代價

生成模型
生成Model 類別
php artisan make:model Task

生成Model 類別，連帶生成對應的Migration檔案
php artisan make:model Task -m

Model進階屬性
指定該模型要對應的表格名稱，如果沒按照命名慣例才需要提供
protected $table = ‘新表格名稱’;

將自定義的timestamps欄位自動轉換成Carbon型態
protected $dates = [‘sell_at’];

指定表格的自定義主鍵欄位名稱
protected $primaryKey = ‘user_id’;

關閉主鍵的自增功能
protected $incrmenting = false;

呈上一個，如果主鍵不是int，就需要指定類型，比如字串
protected $keyType = ‘string’;

關閉created_at和updated_at的自動維護
protected $timestamps = false;

設定date型態的欄位被存進資料庫時的格式
protected $dateFormat = ‘U’;

修改預設的時間戳記欄位名稱
const CREATED_AT = ‘creation_date’;
const UPDATED_AT = ‘last_update’;

此模型需要連到其他的資料庫
protected $connection = ‘connection-name’;

測試範例
//routes/web.php
Route::get('/tasks','SiteController@showTasks');

//App\Http\Controllers\SiteController
public function showTasks(){
    return response()->json(Task::get())->setEncodingOptions(JSON_UNESCAPED_UNICODE);
}
發表於  HackMD
 158
讚賞 收藏 訂閱