Eloquent Laravel:用foreach循环创建一个计数器

时间:2018-01-24 02:15:00

标签: laravel eloquent

使用Laravel的Eloquent,我试图根据'product_id'为某些行添加增量计数器。

我以为我可以这样做:

$foos = GanttTask::where('product_id',1)->orderBy('date', 'ASC');

$counter = 1;

foreach($foos as $foo){
    $foo->custom_counter = $counter;
    $counter +=1;
}

return $foos->get();

但这对我的数据没有影响,custom_counter列不会改变(但我没有错误)。

我尝试在循环中添加$foo->save()但没有效果。

2 个答案:

答案 0 :(得分:1)

首先获取所有记录,然后使用以下保存方法修改单个记录:

Map.values(map)

祝你好运!!!

答案 1 :(得分:0)

要实际更新数据库,我认为您需要单独保留每个数据对象foo,而不是整个集合foos

$foos = GanttTask::where('product_id',1)->orderBy('date', 'ASC');

$counter = 1;

foreach($foos as $foo){
    $foo->custom_counter = $counter;
    $counter +=1;
    $foo->save(); // Persisting data here
}