Laravel 8 firstOrCreate/ firstOrNew
这里有两个你可能用来批量赋值的方法: firstOrCreate
和 firstOrNew
。 firstOrCreate
方法会通过给定的键 / 值对来匹配数据库中的数据。如果在数据库中找不到模型,则将插入一条记录,其中包含第一个参数的属性以及可选的第二个参数的属性。
firstOrNew
方法像 firstOrCreate
方法一样尝试通过给定的属性查找数据库中的记录。不过,如果 firstOrNew
方法找不到对应的模型,会返回一个新的模型实例。注意 firstOrNew
返回的模型实例尚未保存到数据库中,你需要手动调用 save
方法来保存:
// 通过 name 检索航班,不存在则创建...
$flight = App\Models\Flight::firstOrCreate(['name' => 'Flight 10']);
// 通过 name 检索航班,或使用 name 和 delayed 属性和 arrival_time 属性创建...
$flight = App\Models\Flight::firstOrCreate(
['name' => 'Flight 10'],
['delayed' => 1, 'arrival_time' => '11:30']
);
// 通过 name 检索航班,不存在则创建一个实例...
$flight = App\Models\Flight::firstOrNew(['name' => 'Flight 10']);
// 通过 name 检索航班,或使用 name 和 delayed 属性和 arrival_time 属性创建一个模型实例...
$flight = App\Models\Flight::firstOrNew(
['name' => 'Flight 10'],
['delayed' => 1, 'arrival_time' => '11:30']
);