firstOrCreate
/ firstOrNew
#還有兩種其它方法,你能夠用來經過屬性批量賦值建立你的模型:firstOrCreate
和firstOrNew
。firstOrCreate
方法將會使用指定的字段/值對,來嘗試尋找數據庫中的記錄。若是在數據庫中找不到模型,則會使用指定的屬性來添加一條記錄。php
firstOrNew
方法相似 firstOrCreate
方法,它會嘗試使用指定的屬性在數據庫中尋找符合的紀錄。若是模型未被找到,將會返回一個新的模型實例。請注意 firstOrnew
返回的模型還還沒有保存到數據庫。你須要經過手動調用save
方法來保存它:laravel
// 經過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