我有 8 个不同的问题,这些问题是随机来自数据库的。
现在我想将 question_id
、user_id
和 en_answer
插入到 en_answers
表中。
数据已插入,但出现了一些错误,例如 - 第一个是,它仅插入了一行值,第二个是,问题 ID 不正确。
我试过像下面这样的东西。请有人帮助纠正 Controller 方法 -
在 index.blade.php -
<form action="{{ url('en-question-answer') }}" method="POST">
{{ csrf_field() }}
<?php
$count=1;
;?>
@foreach($equestions as $equestionType)
@foreach($equestionType as $key => $equestion)
<p>{{ $equestion->question }}</p>
<input type="hidden" name="question_id[{{$count}}]" value="{{ $equestion->id }}">
<label class="radio-inline">
<input type="radio" name="en_answer[{{$count}}]" value="{{ $equestion->option1 }}">{{ $equestion->option1 }}
</label>
<label class="radio-inline">
<input type="radio" name="en_answer[{{$count}}]" value="{{ $equestion->option2 }}">{{ $equestion->option2 }}
</label>
<hr>
<?php $count++; ?>
@endforeach
@endforeach
<button type="submit" class="btn btn-primary btn-sm pull-right">Submit</button></form>
在我的 Controller 中-
public function store(Request $request, User $user){
$user_id = Sentinel::getUser()->id;
$answer = new EnAnswer;
$answer->user_id = $user_id;
$data = Input::get();
for($i = 1; $i < count($data['en_answer']); $i++) {
$answer->en_answer = $data['en_answer'][$i];
}
for($i = 1; $i < count($data['question_id']); $i++) {
$answer->question_id = $data['question_id'][$i];
}
//dd($answer);
//return $answer;
$answer->save();
return redirect('submitted')->with('status', 'Your answers successfully submitted');
}
最佳答案
您只向数据库中插入了一个答案,即最后一个。此外,您可以准备数据并通过一个查询插入所有答案:
public function store(Request $request)
{
for ($i = 1; $i < count($request->en_answer); $i++) {
$answers[] = [
'user_id' => Sentinel::getUser()->id,
'en_answer' => $request->en_answer[$i],
'question_id' => $request->question_id[$i]
];
}
EnAnswer::insert($answers);
return redirect('submitted')->with('status', 'Your answers successfully submitted');
}
关于php - 在 Laravel 中将数组值插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48128471/