を複製し、continuます。 フィールドの電子メールに一意の制約があります。配列に複数の同じ電子メールがある場合、「重複エントリ」というエラーが表示され、クエリが停止します。質量は、インサート、私はLaravelを使用していますし、私は大規模な挿入をやろうとしている
重複しているエントリがあっても挿入を続けることはできますか?私はそれらを無視することはできますか? (そしてデバッグのために入手してください)
ありがとう!
を複製し、continuます。 フィールドの電子メールに一意の制約があります。配列に複数の同じ電子メールがある場合、「重複エントリ」というエラーが表示され、クエリが停止します。質量は、インサート、私はLaravelを使用していますし、私は大規模な挿入をやろうとしている
重複しているエントリがあっても挿入を続けることはできますか?私はそれらを無視することはできますか? (そしてデバッグのために入手してください)
ありがとう!
これにtry\catch
を使用してIlluminate\Database\QueryException
をキャッチすることができます。
try{
DB::table('users')->insert(
[
'name' => $user->user_name,
'email' => $user->user_email,
]
);
} catch(Illuminate\Database\QueryException $e) {
//i want to consume this and continue, so I do nothing here.
}
エラーコードが$e
を介して提供され、1062
はDuplicate Key
警告です。あなたはあなたのcatch
ブロックの内部を特に調べることができます。
catch (Illuminate\Database\QueryException $e){
$errorCode = $e->errorInfo[1];
if($errorCode == 1062){
// houston, we have a duplicate entry problem
}
}
あなたは
foreach ($users as $key => $user) {
try {
DB::table('users')->insert([
'name' => $user->user_name,
'email' => $user->user_email,
]);
} catch (\Exception $e) {
//dump detail hear
}
}
次試みる中断せずにデータを挿入し続けたい場合は、この本1の重複です:http://stackoverflow.com/questions/12622341/insert -ignore-using-laravels-fluent – Galz