簡體   English   中英

Laravel使用foreach循環更新/編輯

[英]Laravel update/edit using foreach loop

我試圖更新我的表,但無法使其工作..我總是以錯誤結尾:

為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'); 

這是我要循環更新分數的表:

在此處輸入圖片說明

從聊天討論中發現,您想要更新多個分數,該分數列在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 

控制器更新分數

public function update_score(Request $request) 
{ 
    $scores = $request->input('scores');  //here scores is the input array param 

    foreach($scores as $row){
        $score = Score::find($row['id']); 
        $score->jan_ap = $row['jan_ap']; 
        $score->jan_hm = $row['jan_hm']; 
        $score->save(); 
    }
} 

使用Score::find($id)只會返回1個結果,因此不會有任何其他內容。

如果您只想更新表中的一行,則無需進行更新。

您可以簡單地運行

$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();

那將返回表中的每一行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM