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
作为一对,或者至少尝试