我的问题是我想根据数量更新quantity_served
,然后根据输入值将最后一个循环值插入到最后一条记录中。
例如,我的输入值为180。
我的代码没有插入循环的最后一个值,而不是数量的完整值。
$var = $request->get('id');
$data = bulkcorporatemodel::orderBy('id', 'asc');
foreach ($data as $item)
{
if ($var == 0 || $var < 0)
{
break;
}
$bulkcorp = bulkcorporatemodel::find($item->id);
$dummyHolder = $bulkcorp->quantity;
$bulkcorp->quantity_served = $dummyHolder;
$bulkcorp->save();
$success_output = '<div class="alert alert-success">BULK DATA UPDATED</div>';
$var = $var - $dummyHolder;
}
答案 0 :(得分:0)
(编辑: 我注意到$ item实际上已经在您的$ data集合中,不需要找到它,它已经存在。我已经相应地修改了代码并一起缩短代码:))
$var = $request->get('id');
$data = bulkcorporatemodel::orderBy('id', 'asc')->get();
foreach ($data as $bulkcorp)
{
if ($var <= 0)
{
break;
}
$bulkcorp->update(
['quantity_served' => $bulkcorp->quantity]
);
$success_output = '<div class="alert alert-success">BULK DATA UPDATED</div>';
$var = $var - $bulkcorp->quantity;
}
关键字为update()
我不清楚的是$var
和$bulkcorp->quantity
之间的关系。如果var确实是一个id,则您将在一个周期内获得小于0的值,而$ data集合的其余部分将不会执行。如果$request->get('id')
是一个大数字,那就没问题。
但是,这是您真正想要实现的目标。通常,我们应该向您提供此代码,但是可以,一次:
$stock = $request->get('id');
$data = bulkcorporatemodel::orderBy('id', 'asc')->get();
foreach ($data as $bulkcorp)
{
if ($stock <= 0)
{
break;
}
$stock >= $bulkcorp->quantity ? $served = $bulkcorp->quantity : $served = $stock;
$bulkcorp->update(
['quantity_served' => $served]
);
$success_output = '<div class="alert alert-success">BULK DATA UPDATED</div>';
$stock = $stock - $bulkcorp->quantity;
}