Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用foreach循环更新/编辑Laravel_Php_Mysql_Laravel - Fatal编程技术网

Php 使用foreach循环更新/编辑Laravel

Php 使用foreach循环更新/编辑Laravel,php,mysql,laravel,Php,Mysql,Laravel,我试图更新我的表,但无法使其正常工作。。我总是以错误告终: 为foreach()提供的参数无效 这是我的控制器: public function show_score($id) { $scores = Score::with(['lead','subject'])->where(['subject_id'=>$id])->get(); return view('markbook.show_score',compact('scores

我试图更新我的表,但无法使其正常工作。。我总是以错误告终:

为foreach()提供的参数无效

这是我的控制器:

 public function show_score($id)
    {

        $scores = Score::with(['lead','subject'])->where(['subject_id'=>$id])->get();

        return view('markbook.show_score',compact('scores'));
    }

    public function update_score(Request $request)
    {
        $id = $request->input('id');

         $scores = Score::find($id);
         foreach ($scores as $datas) {
         $datas->jan_ap=$request->input('jan_ap');
         $datas->jan_hm=$request->input('jan_hm');
         $datas->save();  

        }


    }

route:
Route::get('markbook/scores/{id}', 'MarkbookController@show_score' );
Route::post('markbook/scores', 'MarkbookController@update_score'); 
这是我的表格,我正在尝试循环更新的分数:

使用
Score::find($id)
您只会返回一个结果,因此不会有任何结果需要处理

如果只想更新表中的一行,则不需要对其进行foreach

你可以直接跑

$score = Score::find($request->input($id));
$score->jan_ap = $request->input('jan_ap');
$score->jan_hm = $request->input('jan_hm');
$score->save();
如果要返回多行,则需要将查找更改为
get()

所以,
$scores=Score::where('something',$request->input('something))->get()

如果要使用相同的信息更新表中的每一行,请执行以下操作:

$scores=Score::all()

这将返回表中的每一行。

使用
Score::find($id)
您将只返回一个结果,这样就不会有任何可重复的内容

如果只想更新表中的一行,则不需要对其进行foreach

你可以直接跑

$score = Score::find($request->input($id));
$score->jan_ap = $request->input('jan_ap');
$score->jan_hm = $request->input('jan_hm');
$score->save();
如果要返回多行,则需要将查找更改为
get()

所以,
$scores=Score::where('something',$request->input('something))->get()

如果要使用相同的信息更新表中的每一行,请执行以下操作:

$scores=Score::all()


这将返回表中的每一行。

从聊天讨论中发现,您希望更新tr、td中列出的多个分数。你可以这样改变它

视图更改

@foreach($scores as $score) 
    <tr> 
        <td>{{$score->lead->student_name}} <input type="hidden" name="scores[{{$loop->index}}][id]" value="{{$score->id}}"></td> 
        <td><input type="text" name="scores[{{$loop->index}}][jan_ap]" value="{{$score->jan_ap}}"></td> 
        <td><input type="text" name="scores[{{$loop->index}}][jan_hm]" value="{{$score->jan_hm}}"></td> 
    </tr> 
@endforeach 

从聊天讨论中发现,您希望更新tr、td中列出的多个分数。你可以这样改变它

视图更改

@foreach($scores as $score) 
    <tr> 
        <td>{{$score->lead->student_name}} <input type="hidden" name="scores[{{$loop->index}}][id]" value="{{$score->id}}"></td> 
        <td><input type="text" name="scores[{{$loop->index}}][jan_ap]" value="{{$score->jan_ap}}"></td> 
        <td><input type="text" name="scores[{{$loop->index}}][jan_hm]" value="{{$score->jan_hm}}"></td> 
    </tr> 
@endforeach 

Score::find($id)查找一个项目/行,您在这里尝试循环什么?我正在尝试循环Jan_ap和Jan_hm更新它们,$datas声明在哪里?$scores=Score::find($id);返回1个object right?wwait并查看我的表i更新我的问题
Score::find($id)查找一个项目/行,您在这里尝试循环什么?我正在尝试循环Jan_ap和Jan_hm更新它们,$datas声明在哪里?$scores=Score::find($id);返回1个对象,对吗?等待并查看我的表格我更新我的问题关于多行示例两个学生,然后您需要将您的查找机会转换为get();我还需要for each循环吗?是的,如果您返回多行。旁注:如果您将数组/数组表传递给
find
您将获得一个集合关于多行示例两个学生,那么您需要将您的查找机会传递给get();是否仍需要for each循环?如果返回多行,则需要。旁注:如果将数组/数组表传递给
find
,则将获得一个集合