どちらが良いのだろうか。
どちらも冪等性が保証される
DB::table('table')->truncate ()
CategoryTableSeeder.php
// 外部キー制約を一時的に無効にする
DB::statement('SET FOREIGN_KEY_CHECKS=0;');
DB::table('categories')->truncate();
$category = [
'id' => 1,
'name' => 'IT',
];
DB::table('categories')->insert($category);
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
- こっちの方が多数派?
- 一時的にデータが消えるので、一瞬エラーは出そう
updateOrCreate
CategoryTableSeeder.php
$category = [
'id' => 1,
'name' => 'IT',
];
Category::updateOrCreate(['id' => $attributes['id']], $attributes);
- 一時的に消さなくて良い
- モデルに
$fillable
を設定する必要がある - 多分性能(処理速度)は悪い