laravel 7验证唯一多个列
如何对多个列进行viladate 表名“考试开始” 纵队laravel 7验证唯一多个列,laravel,Laravel,如何对多个列进行viladate 表名“考试开始” 纵队 id exam_id exam_multi_id student_id exam_class_id exam_code_id Status class Student extends Model { // exam public function exams(){ return $this->belongsToMany('App\Exam','exam_sta
id
exam_id
exam_multi_id
student_id
exam_class_id
exam_code_id
Status
class Student extends Model
{
// exam
public function exams(){
return $this->belongsToMany('App\Exam','exam_starts','student_id','exam_id')
->withPivot(['id','exam_multi_id','exam_class_id','exam_code_id','Attend','pass','Status'])-
>withTimestamps();
}
}
如何在表“考试开始”中唯一列“学生id”和“考试类别id”
我的试用控制器
class ExamClassController extends Controller
{
$this->validate($request, [
'exam_class_id' => [
'required',
'integer',
'unique:exam_startss,exam_class_id,'.$request->exam_class_id .',student_id' ,
],
'student_id' => 'bail|required|integer',
'exam_start_id' => 'bail|required|integer',
'exam_id' => 'bail|required|integer',
'exam_multi_id' => 'bail|required|integer',
'code' => 'nullable|string',
'student' => 'bail|required|string',
]);
}
这是mysql的结果
(SQL: select count(*) as aggregate from `exam_starts` where `exam_class_id` = 1 and `student_id` <> 1)
(SQL:选择count(*)作为“考试开始”的聚合,其中“考试班级id”=1和“学生id”1)
使用Unique rule类,您可以将多个where传递给它,以生成一个包含两列的唯一约束
(new Unique('exam_starts'))
->where('student_id ', $request->student_id)
->where('exam_class_id', $request->exam_class_id);
像这样将其设置为验证
'exam_class_id' => [
'required',
'integer',
(new Unique('exam_starts'))
->where('student_id ', $request->student_id)
->where('exam_class_id', $request->exam_class_id),
],