Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.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 创建自定义错误验证规则_Php_Laravel - Fatal编程技术网

Php 创建自定义错误验证规则

Php 创建自定义错误验证规则,php,laravel,Php,Laravel,我正试图用表单中的课程1,课程2将学生信息存储在数据库id,name。 同一学生不能再注册同一课程 Students Table id name 1 X 2 Y Courses Table id course_name 1 A 2 B Student_courses Table student_id courses_id 1 1 2 1 2 2 学生控制器如下所示: public function st

我正试图用表单中的
课程1,课程2
将学生信息存储在数据库
id,name
。 同一学生不能再注册同一课程

Students Table
id name
 1  X
 2  Y
Courses Table
 id course_name
 1   A
 2   B

Student_courses Table
 student_id courses_id
  1          1
  2          1
  2          2
学生控制器如下所示:

public function studentRegistration(Request $request)
{
  $student = new Student();
  $student->name = $request->Input(['student_name']);
  $student->save(); 

   $courses = array(
            $request->Input(['course_1']),
            $request->Input(['course_2']), 
            $request->Input(['course_3'])
        );

   foreach ($courses as $course) 
        {
           $studentCourse = new StudentCourse();
           $studentCourse->student_id = $student->id;
           $studentCourse->course_id = $course;
           $studentCourse->save();
        }
}

如何使用Laravel进行此自定义验证,使同一学生不能再次参加同一课程

您可以使用现有的规则吗

验证规则:

'course_1' => 'different:course_2,course_3|...',
'course_2' => 'different:course_3|...',
我不确定实际问题对这个例子有多精确。如果这些字段更具动态性,那么定制规则就更有意义了

这只是为了验证输入是否为这些字段的唯一值。要对照数据库进行检查,
unique
规则可以进入:

'course_1' => [..., $uniqueRule = Rule::unique('student_courses', 'course_id')->where('student_id', $whoEverTheStudentToCheckAgainstIs)],
'course_2' => [..., $uniqueRule],
'course_3' => [$uniqueRule],

如果您确实需要,可以将其隐藏在自定义规则后面。

您也可以尝试,在sql数据库中创建唯一索引,使学生id和课程id唯一,但它们在其他表中。表示课程id和学生id在不同的表中?唯一规则检查只允许学生注册一个类。忘记了“唯一”列。。。它会说,学生无法再次注册特定课程,因为将在轴中检查
课程id
学生id
作为一对,或者至少尝试