【发布时间】:2020-05-09 18:01:58
【问题描述】:
请求数据
{
"exam_id": 10,
"exam_scores": [
{
"student_id": 1,
"subject_id": 1,
"marks": 50,
},
{
"student_id": 1,
"subject_id": 2,
"marks": 70,
},
{
"student_id": 1,
"subject_id": 3,
"marks": 80,
}
],
}
其中 student_id 和 subject_id 是唯一的复合键, 如何使用接受数据数组的规则方法为复合键制作验证器() 我试过了,但它没有按预期工作。
$validator = Validator::make(request()->all(), [
"exam_id"=> "required|integer",
"exam_scores"=> "required|array",
'exam_scores.*.student_id' => [
Rule::unique('results')->where(function ($query) {
return $query
->whereStudent_idAndSubject_id(request()->get('exam_scores.*.student_id'),request()->get('exam_scores.*.subject_id'))
})
],
]);
以下请求不应验证数据。但它验证成功。
{
"exam_id": 10,
"exam_scores": [
{
"student_id": 1,
"subject_id": 1,
"marks": 50,
},
{
"student_id": 1,
"subject_id": 1,
"marks": 70,
}
],
}
以下请求成功验证了具有预期的单个考试分数对象的数据。
{
"exam_id": 10,
"exam_scores": {
"student_id": 1,
"subject_id": 1,
"marks": 50,
}
}
$validator = Validator::make(request()->all(), [
"exam_id"=> "required|integer",
"exam_scores"=> "required|array",
'exam_scores.student_id' => [
Rule::unique('results')->where(function ($query) {
return $query
->whereStudent_idAndSubject_id(request()->get('exam_scores.student_id'),request()->get('exam_scores.subject_id'))
})
],
]);
【问题讨论】:
-
你确定 whereStudent_idAndSubject_id。据我所知应该是 whereStudentIdAndSubjectId
-
是的,字段命名约定运行良好。
-
那么“它没有按预期工作”是什么意思?
标签: php laravel validation