顧名思義,在介紹如何新增更新 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

arrow
arrow

    Mayuge 發表在 痞客邦 留言(0) 人氣()