阅读(616) (0)

Laravel 8 firstOrCreate/ firstOrNew

2021-07-07 10:18:53 更新

这里有两个你可能用来批量赋值的方法: firstOrCreatefirstOrNewfirstOrCreate 方法会通过给定的键 / 值对来匹配数据库中的数据。如果在数据库中找不到模型,则将插入一条记录,其中包含第一个参数的属性以及可选的第二个参数的属性。

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']
);