Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在laravel中消除重复输入_Php_Mysql_Json_Laravel_Api - Fatal编程技术网

Php 如何在laravel中消除重复输入

Php 如何在laravel中消除重复输入,php,mysql,json,laravel,api,Php,Mysql,Json,Laravel,Api,在这里,我面临着数据库中重复条目的问题。我在控制器中设置了唯一的患者ID,我想添加具有相同电子邮件但唯一电话号码的用户 我在控制器功能中所做的和尝试: public function store(Request $request) { $validator = \Validator::make($request->all(), [ 'name' => 'required', 'email' => 'required|email',

在这里,我面临着数据库中重复条目的问题。我在控制器中设置了唯一的患者ID,我想添加具有相同电子邮件但唯一电话号码的用户

我在控制器功能中所做的和尝试:

public function store(Request $request) {    
    $validator = \Validator::make($request->all(), [
        'name' => 'required',
        'email' => 'required|email',
        'phone'=>'required|min:11|numeric|unique:patients',
        'birth_date' => 'required',
        'gender' => 'required',
        'address' => 'required',
    ]);

    if ($validator->fails()) {
        $errors = $validator->errors();
        return $errors->toJson();
    } else {
        $fileNameToStore = 'defaultimg/avatar.png';
        $post = new patient;
        $post->name = $request->input('name');
        $post->email = $request->input('email');
        $post->picture = $fileNameToStore;
        $post->birth_date = $request->input('birth_date');
        $post->gender = $request->input('gender');
        $address = htmlspecialchars($request->input('address'));
        $post->address = $address;
        $post->patient_id = 'PID' . rand(999, 9999999999999);
        $post->phone = $request->input('phone');
        $post->save();

        return response(array(
            'error' => false,
            'message' => 'Patient added successfully', 'patientid' => $post->patient_id,), 200);
    }
}
根据我的要求,一切正常,但代码引发以下异常:

QueryException SQLSTATE[23000]:完整性约束冲突:1062重复项'front@gmail.com“对于关键的患者\u电子邮件\u唯一”

以下是我对
患者
表的迁移:

Schema::create('patients', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('email')->unique();
    $table->string('birth_date');
    $table->string('gender');
    $table->string('address');
    $table->string('patient_id');
    $table->string('picture');
    $table->string('phone')->unique();
    $table->rememberToken();
    $table->timestamps();
});

您应该将
unique
验证规则添加到
email
字段,如下所示:

$validator = \Validator::make($request->all(), [
    'name' => 'required',
    'email' => 'required|email|unique',
    'phone'=>'required|min:11|numeric|unique:patients',
    'birth_date' => 'required',
    'gender' => 'required',
    'address' => 'required',
]);

您应该将
unique
验证规则添加到
email
字段,如下所示:

$validator = \Validator::make($request->all(), [
    'name' => 'required',
    'email' => 'required|email|unique',
    'phone'=>'required|min:11|numeric|unique:patients',
    'birth_date' => 'required',
    'gender' => 'required',
    'address' => 'required',
]);
换行

$table->string('email')->unique();

换行

$table->string('email')->unique();

在您的迁移中

$table->string('email')->unique();
在您的迁移中

$table->string('email')->unique();

可以使用laravel验证检查特定表中的唯一项

$validator = \Validator::make($request->all(), [
    'name' => 'required',
    'email' => 'required|email|unique:patients,email',
    'phone'=>'required|min:11|numeric|unique:patients',
    'birth_date' => 'required',
    'gender' => 'required',
    'address' => 'required',
]);

可以使用laravel验证检查特定表中的唯一项

$validator = \Validator::make($request->all(), [
    'name' => 'required',
    'email' => 'required|email|unique:patients,email',
    'phone'=>'required|min:11|numeric|unique:patients',
    'birth_date' => 'required',
    'gender' => 'required',
    'address' => 'required',
]);

向我们展示您的用户迁移感谢回复sohel您是指患者\ U表迁移?是的,我是指您用于患者模型U的表迁移只需向多个患者提交相同的电子邮件。但是您在迁移中设置了
unique()
。@Jagdisharma您正在使电子邮件字段唯一,请参阅我的答案,您可能有一些想法告诉我们您的用户迁移感谢回复sohel您指的是患者表迁移?是的,我指的是您用于患者模型的表迁移您只需向多个患者提交同一封电子邮件。但是您在迁移中设置了
unique()
。@jagdisharma您正在使电子邮件字段唯一,请参阅我的答案,您可能对您的回复有一些想法多米尼克,但我不想要患者的唯一电子邮件我已经设置了唯一id。感谢您的回复多米尼克,但我不想要患者的唯一电子邮件我已经设置了唯一id。感谢您宝贵的回复adnan Mumtaz现在我的问题已经解决感谢您宝贵的回复adnan Mumtaz现在我的问题已经解决谢谢你宝贵的答复我的问题已经解决谢谢你宝贵的答复我的问题已经解决