如何使用Laravel在数据库中插入数据数据及其各自的数据数组?

问题描述 投票:2回答:2

问题模型

public function answer() {
    return $this->hasOne('App\Answer');
}

视图:

@foreach($questions as $question)
    <label>{{$question->question}}</label>
    <input type="hidden" name="question_ids[]" value="{{$question->id}}">
    <textarea name="answers[]"></textarea>           
@endforeach

控制器:

foreach($request->input('question_ids') as $id) {
    foreach($request->input('answer') as $ans) {
        $answer = new Answer;
        $question = Question::find($id);
        $answer->answer = $ans;
        $question->answer()->save($answer);
    }
}

我想插入问题及其各自的答案,但它正在插入相同问题的答案。请任何人帮忙。提前致谢。

php arrays laravel
2个回答
0
投票

您可以将textarea答案字段设为数组,其中包含填充了问题ID的键。

@foreach($questions as $question)
    <label>{{$question->question}}</label>
    <textarea name="answers[{{ $question->id }}]"></textarea>           
@endforeach

和控制器。根据我的喜好略微编辑。

foreach ($request->input('answers') as $questionId => $value) {
    if ($question = Question::find($questionId)) {
        $answer = new Answer;
        $answer->answer = $value;
        $answer->question_id = $questionId;
        $answer->save();
    }
}

0
投票

与@ Chay22相同的方法,只是更短一些。

foreach ($request->input('answers') as $questionId => $value) {
    if ($question = Question::find($questionId)) {
        $question->answer()->save(
             new Answer(['answer' => $value])
        );
    }
}

请注意answer fillable模型中的Answer

© www.soinside.com 2019 - 2024. All rights reserved.