Laravel 8:未定义索引

Laravel 8: Undefined index

提问人:Iam-kelvin 提问时间:7/31/2021 更新时间:2/12/2022 访问量:1841

问:

我正在做一个问卷调查项目,我遇到了一个错误,说:

未定义索引:考试

当我尝试将响应存储到我的数据库时,就会发生这种情况。

这是我的控制器代码:

    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);
    }
}

请帮我调查一下。

Laravel Laravel-8 未定义索引

评论

1赞 Alberto 7/31/2021
为什么应该存在?$data['exams']
1赞 Maksim 7/31/2021
只需查看您的验证规则即可。我在那里没有看到“考试”。
0赞 Iam-kelvin 7/31/2021
@Maksim我实际上是在跟着我的导师,这是课程后的项目,没有考试验证,但现在尝试消除了错误
0赞 Iam-kelvin 7/31/2021
@AlbertoSinigaglia :它之所以存在,是因为我试图保存用户的响应
0赞 Maksim 7/31/2021
你为什么不问导师?

答:

1赞 matiaslauriti 7/31/2021 #1

request()->validate(RULES)将返回一个数组,其中包含所有现有的 .它不会返回所有存在的数据,只是返回规则和当前的内容。rules' indexes

了解 $request->validate() 的工作原理。

例如:

如果您发送 、 和 ,但您的规则是:home = 'Address'name = 'John'email = 123

$data = $request->validate([
    'home' => 'required',
    'name' => 'required',
]);

然后,如果你想使用,你会有():$datadd($data)

  • $data['home']:Address
  • $data['name']:John

但不会出现在 .email = 123$data