1. 程式人生 > >Eloquent中一些其他的create方法

Eloquent中一些其他的create方法

如果 不存在 nat delayed Language 手動 china class code

firstOrCreate/ firstOrNew#

還有兩種其它方法,你可以用來通過屬性批量賦值創建你的模型:firstOrCreatefirstOrNewfirstOrCreate 方法將會使用指定的字段/值對,來嘗試尋找數據庫中的記錄。如果在數據庫中找不到模型,則會使用指定的屬性來添加一條記錄。

firstOrNew 方法類似 firstOrCreate 方法,它會嘗試使用指定的屬性在數據庫中尋找符合的紀錄。如果模型未被找到,將會返回一個新的模型實例。請註意 firstOrnew 返回的模型還尚未保存到數據庫。你需要通過手動調用save 方法來保存它:

// 通過name屬性檢索航班,當結果不存在時創建它...
$flight = App\Flight::firstOrCreate([‘name‘ => ‘Flight 10‘]);

// 通過name屬性檢索航班,當結果不存在的時候用name屬性和delayed屬性去創建它
$flight = App\Flight::firstOrCreate(
    [‘name‘ => ‘Flight 10‘], [‘delayed‘ => 1]
);

// 通過name屬性檢索航班,當結果不存在時實例化一個新實例...
$flight = App\Flight::firstOrNew([‘name‘ => ‘Flight 10‘]);

// 通過name屬性檢索航班,當結果不存在的時候用name屬性和delayed屬性去實例化一個新實例
$flight = App\Flight::firstOrNew(
    [‘name‘ => ‘Flight 10‘], [‘delayed‘ => 1]
);

updateOrCreate#

其次,你可能會碰到模型已經存在則更新,否則創建新模型的情形,Laravel 提供了一個 updateOrCreate 方法來一步完成該操作,類似 firstOrCreate 方法, updateOrCreate 方法會持久化模型,所以無需調用 save() :

// If there‘s a flight from Oakland to San Diego, set the price to $99.
// If no matching model exists, create one.
$flight = App\Flight::updateOrCreate(
    [‘departure‘ => ‘Oakland‘, ‘destination‘ => ‘San Diego‘],
    [‘price‘ => 99]
);
參考地址:https://d.laravel-china.org/docs/5.5/eloquent#mass-assignment

Eloquent中一些其他的create方法