«SQLSTATE [23000]: нарушение ограничения целостности: 1062 Повторяющаяся запись - PullRequest
0 голосов
/ 26 мая 2018

Я отправляю форму с 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');
}

Мой файл успешно загружается, а также, данные вставляются в базу данных, но все же я получаю эту ошибку,Это не влияет на меня, но хотите решить это?

1 Ответ

0 голосов
/ 26 мая 2018

В файле миграции $ table-> string ('email') -> unique ();У идентификатора электронной почты есть уникальный ключ, который вы можете удалить уникальный ключ

ИЛИ

вам необходимо обработать проверку как 'email' => 'обязательный | уникальный: пользователи' вместо 'email' => 'обязательный'

ИЛИ

изменить запрос, как показано ниже $ email_check = User :: where (['email' => $ data ['электронная почта']) -> первый ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...