【问题标题】:laravel : how can i update multiple rows in one time?laravel:如何一次更新多行?
【发布时间】:2022-01-26 21:37:03
【问题描述】:

我想通过更改所有行的 1 个属性来一次选择多行更新它们, 我不知道我该怎么做,如果您有解释它的教程或视频,请与我分享!

【问题讨论】:

    标签: php mysql ajax laravel


    【解决方案1】:

    好的,这是我的工作代码。你可能想试试这个。

    这是我的数据表复选框代码。我正在使用 yajra 数据表。所以这是在我的控制器中编码的。

    <label class="checkbox checkbox-single">
       <input name="users[]" type="checkbox" value="' . $user->id . '" class="checkable">
       <span></span>
    </label>
    

    html中的这个按钮将处理批量编辑

    <button class="btn  btn-danger disabledeleted mr-2" id="bulkupdate" onclick="updateRecords()">Update</button>
    

    点击按钮时调用的javascript函数。

    function updateRecords(){
        var ids = [];
        $('[name="users[]"]:checked').each(function(){
            ids.push($(this).val());
        });
        $.ajax({
             url: $url, // route to bulk edit handler method in controller
             type: 'post',
             data: {
                "id": ids,
                "_token": "{{ csrf_token() }}",
             },
             success: function (data) {
                alert('success');
                // execute your operations after success
             },
         });    
    }
    

    这是我处理批量编辑的控制器功能

    public function updateUser($id) {
        $query = new User();
        $updateData = [
            'active' => 1,
            'deleted_at' => null
        ];
        if(is_array($id)) {
            $query = $query->whereIn("id", $id);
        } else {
            $query = $query->where("id", $id);
        }
        if($query->update($updateData)){
            return Response::json([
                "status" => true,
                "msg" => 'success',
            ]);
        }else{
            return Response::json([
                "status" => false,
                "msg" => 'update failed',
            ]);
        }
    }
    

    我希望这对你有帮助@imane

    【讨论】:

      【解决方案2】:

      示例 ModelName=Person

      控制器

      use App\Models\Person;      
      Person::query()->update(['column_name' => 'value']);
      

      或查看

      @php
       use App\Models\Person;      
       Person::query()->update(['column_name' => 'value']);
      @endphp
      

      此代码更新到所有行。如果您只是更新控制器方法上的选定列。使用 POST 调用 foreach 函数中的方法

      你必须在页面顶部定义它的请求类

      use Illuminate\Http\Request; 
      public function person_update(Request $request)
      {
              $person_update= Person::find($request->ID);
              $person_update->Ref= $request->ref;
              $person_update->first_name= $request->first_name;
              $person_update->another_column_name= $request->another_value;
              $person_update->save();
      }
      

      【讨论】:

        【解决方案3】:

        将此代码放入您的控制器函数中

        ModelName::whereIn("id",$idArr)->update([Ref' => 'By Google']);
        

        $idArr 是请求的用户 ID 数组。

        【讨论】:

          【解决方案4】:

          在 Laravel 中,你的控制器函数中应该有这样的东西:

          DB::table('Contact List')
                        ->where('id', '<=', $high_end)
                        ->where('id', '>=', $low_end)
                        ->update([
                                'First Name' => 'Sultan',
                                'Last Name' => 'Soleman',
                                 ]);
          

          【讨论】:

            猜你喜欢
            • 2021-04-02
            • 2020-04-19
            • 1970-01-01
            • 1970-01-01
            • 2017-02-23
            • 1970-01-01
            • 2021-02-15
            • 2022-01-17
            • 2022-12-20
            相关资源
            最近更新 更多