我正在使用Laravel,我正在尝试使用以下内容进行大量插入:
$users
所以class Channel
{
public:
Channel(int channelNumber, ChannelType channelType);
};
是一个大数组,我为每个元素做一个插入。
我对我的字段电子邮件有一个独特的约束,所以,如果我在我的数组中有多个相同的电子邮件,我会收到错误“重复条目”并且查询只是停止。
即使我有重复的条目,我怎样才能继续插入?我可以忽略它们吗? (并让他们进行调试)
谢谢!
答案 0 :(得分:1)
您可以使用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
}
}
答案 1 :(得分:0)
如果您想继续不间断地插入数据,请尝试按照
进行操作foreach ($users as $key => $user) {
try {
DB::table('users')->insert([
'name' => $user->user_name,
'email' => $user->user_email,
]);
} catch (\Exception $e) {
//dump detail here
}
}