对null的成员函数save()的调用:更新中的问题

问题描述 投票:0回答:1

我无法使用foreach更新记录

ScoreController.php

public function updateScore(Request $request, $id)
{
     foreach ($request->score as $key => $id) {

        $scores =  Score::find($request->score[$key]); 
        $scores->save();
        }
    //dd($request->all());
    return redirect('/tabulation')->with('status', 'Score added!');
}

@foreach ($scores as $score)
<label for="{{$score->id}}" value="{{$score->id}}"></label>
<input type="text" name="score[]" value="{{$score->score}}"/>
@endforeach
arrays laravel datatables record
1个回答
1
投票

首先,<label>元素没有value属性:

<label for="{{ $score->id }}" value="{{ $score->id }}"></label>

value="{{ $score->id }}"不执行任何操作,也不会发送到服务器。如果要将分数的ID发送到服务器,请在输入中传递该ID:

@foreach($scores AS $score)
<input type="text" name="scores[{{ $score->id }}]" value="{{ $score->score }}"/>
@endforeach

接下来,在您的控制器中,正确访问变量:

foreach($request->input("scores") AS $id => $scoreValue){
  $score = Score::find($id);
  $score->score = $scoreValue;
  $score->save();
}

获得Call to a member function save() on null的原因是,您试图找到ID为Score包含的ID的$score->score。您没有正确传递或引用id

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