首页 > 解决方案 > “SQLSTATE [23000]:违反完整性约束:1062 重复条目

问题描述

我正在使用 AJAX 提交表单,并且在网络中我收到此错误。

"SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'k@t.com' for key 'users_email_unique' (SQL: insert into `users` (`name`, `email`, `active`, `verify`, `user_type`, `password`) values (K, k@t.com, 2, , 3, $2y$10$FiwHZB1VKWo0skjrCn/16epQq5aqfwdQ055PZLebaK4XEyQFNuDai))"

我正在使用 Laravel 5.6 以及迁移。这是此表的迁移。

    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password');
        $table->tinyInteger('user_type');
        $table->tinyInteger('active');
        $table->rememberToken();
        $table->timestamps();
        $table->index('user_type');
        $table->index('active');
    });

而且,这是我的控制器的功能。

public function teacherApply(Request $request)
{

    if (Input::get()) {

        $data = Input::get();

        $email_check = User::where(['email' => $data['email'], 'active' => 1])->first();

        if (!empty($email_check))
        {
            return ["status" => 3, "message" => "Email already registered"];
        }
        else
        {

           $required_points = [

               'name'                   =>     'required',

               'firstName'              =>     'required',

               'lastName'               =>     'required',

               'email'                  =>     'required',

               'contact'                =>     'required',

               'password'               =>     'required',

               'degree'                 =>     'required',

               'field'                  =>     'required',

               'about'                  =>     'required'

           ];

        $validator = Validator::make($request->all(), $required_points);

        if ($validator->fails()) {

            return response()->json(['errors'=>$validator->errors(),'status' => 2]);

        }

        $name = $data['name'];

        $file_name    =    'Empty';

        $file         =    Input::file('image');

        if(!empty($file))
        {

        $destination   =    base_path('public/pmc_assets/teacher-samples');

        $file_name     =    upload_file($file, $destination);

        }

        $userID = User::insertGetId([

            'name'          =>     $name,

            'email'         =>     $data['email'],

            'active'        =>     2,

            'verify'        =>     '',

            'user_type'     =>     config('constant.teacher'), // Teacher

            'password'      =>     bcrypt($data['password']),
        ]);

        TeacherRequests::insert([

            'name'          =>     $data['firstName']." ".$data['lastName'],

            'phone'         =>     $data['contact'],

            'skype'         =>     $data['skype'],

            'user_id'       =>     $userID,

            'degree_type'   =>     $data['degree'],

            'degree_field'  =>     $data['field'],

            'about'         =>     $data['about'],

            'sample'        =>     $file_name,

            'resume'        =>     '',

            'active'        =>     2,

            'approved'      =>     0,

            'created_at'    =>     Carbon::now()

        ]);

        //send_to_flock_channel($name,"Manual","Teacher");

        return ["status"=> 1, "user_id" => $userID, "email" => $data['email']];

    }

    }

    return view('teacher.apply_teacher');
}

我的文件上传成功,并且数据已插入数据库,但仍然出现此错误。这对我没有影响,但想解决吗?

标签: jqueryajaxlaravel

解决方案


在迁移文件 $table->string('email')->unique(); 电子邮件 ID 具有唯一密钥,您可以删除唯一密钥

或者

您需要处理像 'email' =>'required|unique:users'而不是'email' => 'required'这样的验证

或者

更改查询如下 $email_check = User::where(['email' => $data['email'])->first();


推荐阅读