アプリケーションで「category_name」に一意性制約を持つ「categories」という名前のテーブルがあり、「categories」に複数の行を挿入したいと考えています。
悪い解決策:
foreach($categories as $category) {
Category::firstOrCreate(array('category_name' => $category['name']));
}
これは解決策になる可能性がありますが、これは良い方法ではありません。問題は、数百または数千のレコードがある場合、データベースに対して多くのクエリが行われることです。これは良くありません。
比較対象ソリューション
foreach($categories as $category){
$cats[] = array('category_name' => $category['name']);
}
Category::insert($cats);
しかし、重複した「category_name」を挿入しようとすると、例外がスローされ、カテゴリ名は挿入されません。
使用できることはわかっていますINSERT IGNORE
が、laravel ソリューションのビルドを探しています。