问题描述
未定义索引:考试
这发生在我试图将响应存储到我的数据库时。
这是我的控制器代码:
public function store(Math $math)
{
$data = request()->validate([
'responses.*.answer_id' => 'required','responses.*.question_id' => 'required'
]);
$exam = $math->exams()->create($data['exams']);
$exam->examanswers()->createMany($data['examanswers']);
return 'Thank You';
}
这是我的考试模型:
{
use HasFactory;
protected $fillable = ['exam'];
public function math()
{
return $this->belongsTo(Math::class);
}
public function examanswers()
{
return $this->hasMany(ExamAnswer::class);
}
}
问题模型:
{
use HasFactory;
protected $fillable = ['question'];
public function math()
{
return $this->belongsTo(Math::class);
}
public function answers()
{
return $this->hasMany(Answer::class);
}
}
数学模型:
{
use HasFactory;
protected $fillable = [
'user_id','title','purpose','exam'
];
public function user()
{
return $this->belongsTo(User::class);
}
public function questions()
{
return $this->hasMany(Question::class);
}
public function exams()
{
return $this->hasMany(Exam::class);
}
}
请帮我查一下。
解决方法
request()->validate(RULES)
将返回一个包含所有现有 rules' indexes
的数组。它不会返回所有存在的数据,只会返回规则中和存在的数据。
阅读 $request->validate()
的工作原理。
例如:
如果您发送 home = 'Address'
、name = 'John'
和 email = 123
,但您的规则是:
$data = $request->validate([
'home' => 'required','name' => 'required,]);
然后,如果您想使用 $data
,您将拥有 (dd($data)
):
-
$data['home']
:Address
-
$data['name']
:John
但是 email = 123
不会出现在 $data
中。