如何计算更新的行数

How to count number of rows that gets updated

我为控制器制作了这段代码:

public function updateUncompletedCarts(Request $request)
    {
        $uncompleted = Cart::where('crt_completed',0)->update([
            'crt_completed' => 1,
            'crt_changed' => 1,
        ]);
        $nums = count($uncompleted);
        
        Session::flash('carts-updated',$nums);
        
        return redirect()->back();
    }

现在我只是 运行 一个 update 查询,然后我想显示受影响的行数并将其添加到会话中,以便我可以在 Blade 中检索它,如下所示:

@if(Session::has('carts-updated'))
    <div class="alert alert-success" role="alert">
        {{ Session::get('carts-updated') }}
        rows gets updated!
    </div>
@endif

但是我得到这个错误:

count(): 参数必须是数组或实现Countable

的对象

它指向这一行:

$nums = count($uncompleted);

那么这里出了什么问题?我该如何解决这个问题?

根据文档:https://laravel.com/docs/4.2/eloquent#insert-update-delete

update() 方法returns受影响的行数。

所以,您的代码应该是:

public function updateUncompletedCarts(Request $request) {

  $uncompleted = Cart::where('crt_completed',0)->update([
    'crt_completed' => 1,
    'crt_changed' => 1,
  ]);  
   
  Session::flash('carts-updated',$uncompleted);
        
  return redirect()->back();
}