【问题标题】:How to update select option datatable laravel for current row or id如何更新当前行或 ID 的选择选项数据表 laravel
【发布时间】:2021-01-12 03:05:01
【问题描述】:

我在更新所选选项时遇到问题。数据库可以更新,但它会更新所有数据。我只想更新当前行

javascript:

$(document).ready(function () {
    $('#table_refund').on('change' ,'select', function() {

    var data= $(this).closest('tr');    
    var status = $('option:selected',this).val();
 
    alert(status);
   
     $.ajax({
      type: "get",
      url: "/financial/approve/refund",
      
      data: {status: status },
      dataType: "JSON",
      success: function (response) {
        $('.alert').show();
        
      }
    });
});

控制器:

 public function studentrefund(Request $req)
 {
    //update table 

    data = Refund::find($req->userid);
    $data->status = $req->status;
    $data->save();
    return response()->json(['success'=>'Saved successfully.']);
 }
  

【问题讨论】:

    标签: javascript laravel datatable


    【解决方案1】:

    您需要检查特定 ID 和该用户 ID,以便获得当前行。

    控制器::

      public function studentrefund(Request $req)
      {
        //update table 
    
        $data = Refund::where('id',$req->id)->where('userid',$req->userid)->first();
        $data->status = $req->status;
        $data->save();
        return response()->json(['success'=>'Saved successfully.']);
     }
    

    【讨论】:

    • 显示错误ErrorException Creating default object from empty value
    • 因为 $data 是 Empty 或 $data 没有 status 值,请先检查您是否在 $data 中获取数据
    【解决方案2】:

    您可以使用fundOrFail findOrFail 和firstOrFail 方法来检索查询的第一个结果。但是,如果没有找到结果,则会抛出 Illuminate\Database\Eloquent\ModelNotFoundException laravel.com/docs/5.1/eloquent#retrieving-single-models

    public function studentrefund(Request $req)
    {
      //validate user id
    
      request()->validate([
        'userid' => 'required',
       ]);
    
      //update table 
      
    
      $data = Refund::findOrFail($req->userid);
      $data->status = $req->status;
      $data->save();
      return response()->json(['success'=>'Saved successfully.']);
    }
    

    【讨论】:

    • 它仍然更新所有行而不是仅当前行
    • @bilaProgrammer 请现在尝试我已经添加了验证,因此不接受空用户 ID,并且所有行的更新原因是用户 ID 为空
    • 没错,显示错误:{userid: ["The userid field is required."]} message: "The given data was invalid."
    • @bilaProgrammer 请处理您的刀片文件中的验证,如果您得到答复,请接受它。
    【解决方案3】:

    选项:

    <select id="table_refund">
        <option data-id="{{ $row->id }}" value="Aktive">Test Data</option>
    </select>
    

    jQuery :

    $(document).ready(function() {
        $('#table_refund').on('change', 'select', function() {
    
            var id = $(this).data('id');
            var status = $('option:selected', this).val();
    
            $.ajax({
                type: "POST",
                url: "{{ url('financial/approve/refund') }}",
                data: {
                    "id": id,
                    "status": status,
                },
                dataType: "JSON",
                success: function(response) {
                    $('.alert').show();
    
                }
            });
        });
    

    控制器:

    public function studentrefund(Request $request)
    {
    
        $data = Refund::findOrFail($request->id);
        $data->status = $request->status;
        $data->save();
    
        return response()->json(['success'=>'Saved successfully.']);
    }
    

    【讨论】:

      猜你喜欢
      • 2015-07-06
      • 1970-01-01
      • 2016-07-21
      • 1970-01-01
      • 2018-11-07
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多