Php Laravel-如何更新整个集合

Php Laravel-如何更新整个集合,php,mysql,laravel,Php,Mysql,Laravel,我想和拉威尔建立一个通知系统。我的想法是获取数据并立即更新“已交付”标志 代码如下: Model: public function scopeGetForView($query) { $query->orderBy('created_at','DESC'); $return = $query->get(); if($return->count() > 0) { $query->update(array("is_deli

我想和拉威尔建立一个通知系统。我的想法是获取数据并立即更新“已交付”标志

代码如下:

Model: 

public function scopeGetForView($query)
{
    $query->orderBy('created_at','DESC');

    $return = $query->get();

    if($return->count() > 0) {
        $query->update(array("is_delivered" => 1));
    }

    return $return;
}

Controller: 

$notifications = Auth::user()->notifications()->limit(10)->offset(10)->getForView();
好的,这在没有偏移量的情况下可以正常工作,因为MySQL在更新时只支持限制(没有偏移量)


但是我如何才能更新整个集合而不进行循环?使用即时更新循环将导致许多查询。我可以想到的另一种方法是使用id创建一个数组,并使用where()更新它们。这是唯一的方法吗?

您可以对整个集合运行更新:

DB::table('table_name')->whereIn('id', $collection->modelKeys())->update(['is_delivered' => 1]);

美好的没有听说过modelKeys方法。我以后再试试。谢谢工作完美。再次感谢!:)