无法存储多项选择题的数据。 (非法字符串偏移 'answer')
Can't store data from multiple choice questions. (Illegal string offset 'answer')
我在尝试存储多项选择题的结果时遇到了一些困难。所以我有 2 tables [问题] 和 [答案]。所有问题都存储在问题table中,当我想显示时,我有这个
{{!!Form::open(...)!!}}
@foreach ($questions as $question)
<div>{{$question->question}}</div>
<div class="form-group">
{!! Form::label('answer', 'Score') !!}
{{ Form::selectRange(' answer[]', 1, 10) }}
{{ Form::hidden('question_id[]', $question->id) }}
{{ Form::hidden('user_id[]', $userId) }}
</div>
@endforeach
{{!!Form::submit(...)!!}}
{{!!Form::close()!!}}
好的,所以我也传递了 question_id 和 user_id,这对所有问题都是一样的。我的控制器看起来像这样。
public function store(Request $request)
{
$arr_answers = $request->all();
foreach ($arr_answers as $row) {
QuestionResults::create([
'answer' => $row['answer'],
'question_id' => $row['question_id'],
'user_id' => $row['user_id'],
]);
}
return "working";
$arr_answers returns 3 个数组,答案,question_id 和 user_id,都有正确的信息,所以我的思考过程是 foreach循环应该 return 每个值的 int 但不幸的是它没有玩球并且 returning "Illegal string offset".
请有人指出解决方案或更好的方法。
我不知道 Laravel,但 $arr_answers
很可能返回结构为 $_POST
数组的 3 个子数组和一个提交。所以通过相同的键访问 3 个数组:
foreach ($arr_answers['answer'] as $key => $row) {
QuestionResults::create([
'answer' => $row,
'question_id' => $arr_answers['question_id'][$key],
'user_id' => $arr_answers['user_id'][$key],
]);
}
我在尝试存储多项选择题的结果时遇到了一些困难。所以我有 2 tables [问题] 和 [答案]。所有问题都存储在问题table中,当我想显示时,我有这个
{{!!Form::open(...)!!}}
@foreach ($questions as $question)
<div>{{$question->question}}</div>
<div class="form-group">
{!! Form::label('answer', 'Score') !!}
{{ Form::selectRange(' answer[]', 1, 10) }}
{{ Form::hidden('question_id[]', $question->id) }}
{{ Form::hidden('user_id[]', $userId) }}
</div>
@endforeach
{{!!Form::submit(...)!!}}
{{!!Form::close()!!}}
好的,所以我也传递了 question_id 和 user_id,这对所有问题都是一样的。我的控制器看起来像这样。
public function store(Request $request)
{
$arr_answers = $request->all();
foreach ($arr_answers as $row) {
QuestionResults::create([
'answer' => $row['answer'],
'question_id' => $row['question_id'],
'user_id' => $row['user_id'],
]);
}
return "working";
$arr_answers returns 3 个数组,答案,question_id 和 user_id,都有正确的信息,所以我的思考过程是 foreach循环应该 return 每个值的 int 但不幸的是它没有玩球并且 returning "Illegal string offset".
请有人指出解决方案或更好的方法。
我不知道 Laravel,但 $arr_answers
很可能返回结构为 $_POST
数组的 3 个子数组和一个提交。所以通过相同的键访问 3 个数组:
foreach ($arr_answers['answer'] as $key => $row) {
QuestionResults::create([
'answer' => $row,
'question_id' => $arr_answers['question_id'][$key],
'user_id' => $arr_answers['user_id'][$key],
]);
}