质量插入得到重复和连续

时间:2016-08-08 15:35:13

标签: php mysql laravel

我正在使用Laravel,我正在尝试使用以下内容进行大量插入:

$users

所以class Channel { public: Channel(int channelNumber, ChannelType channelType); }; 是一个大数组,我为每个元素做一个插入。 我对我的字段电子邮件有一个独特的约束,所以,如果我在我的数组中有多个相同的电子邮件,我会收到错误“重复条目”并且查询只是停止。

即使我有重复的条目,我怎样才能继续插入?我可以忽略它们吗? (并让他们进行调试)

谢谢!

2 个答案:

答案 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提供,1062Duplicate Key警告。您可以专门在catch块内查找。

catch (Illuminate\Database\QueryException $e){
    $errorCode = $e->errorInfo[1];
    if($errorCode == 1062){
        // houston, we have a duplicate entry problem
    }
}

Credit for the catch functionality here

答案 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
    }
}