顧名思義,在介紹如何新增與更新 Model 的資料。
基本新增
$flight = new Flight;
$flight->name = $request->name;
$flight->save();
基本更新
$flight = App\Flight::find(1);
$flight->name = 'New Flight Name';
$flight->save();
針對符合給定查詢的任意數量 Model 執行更新
Example:(所有 active
並且 destination
為 San Diego
的航班,將會被標記為延遲)
App\Flight::where('active', 1)
->where('destination', 'San Diego')
->update(['delayed' => 1]);
Mass Assignment
所有的 Eloquent Model 有針對 Mass-Assignment 做保護。
所以,在開始之前,你應該藉由 $fillable
屬性定義你希望哪些 Model 屬性是可以被 Mass-Assignment 的。
Example:( name 屬性可被 Mass-Assignment )
protected $fillable = ['name'];
若已經設定屬性為可以被 Mass-Assignment,我們可以就使用 create
方法來新增一筆新記錄到資料庫。
$flight = App\Flight::create(['name' => 'Flight 10']);
$fillable
作為一個"可以"被 Mass-Assignment 的屬性「白名單」。$guarded
作為一個"不可以"被 Mass-Assignment 的屬性「黑名單」。(只能擇一使用)
其他新增方法
還有兩種其他方法,你可以用來透過屬性 Mass-Assignment 建立你的 Model:firstOrCreate
和 firstOrNew
。
1. firstOrCreate
方法將會使用給定的欄位/值,來嘗試尋找 Database 的記錄。如果在 Database 找不到 Model,將會用給定的屬性來新增一筆記錄。
// 用屬性取回航班,或如果不存在則建立它...
$flight = App\Flight::firstOrCreate(['name' => 'Flight 10']);
2. firstOrNew
方法類似 firstOrCreate
,會嘗試使用給定的屬性在資料庫中尋找符合的紀錄。然而,假設找不到模型,將會回傳一個新的模型實例。請注意 firstOrnew
回傳的模型還尚未保存到資料庫。你需要透過手動呼叫 save
方法來保存它
// 用屬性取回航班,或實例化一個新實例...
$flight = App\Flight::firstOrNew(['name' => 'Flight 10']);
文章引用:
https://laravel.com/docs/5.3/eloquent#inserting-and-updating-models
https://laravel.tw/docs/5.2/eloquent#inserting-and-updating-models
留言列表