如何在Laravel中基于数据库值循环输入字段值并将其插入到行中?

时间:2019-06-23 01:56:35

标签: php laravel loops laravel-5 eloquent

我的问题是我想根据数量更新quantity_served,然后根据输入值将最后一个循环值插入到最后一条记录中。

Current Database record

例如,我的输入值为180。

Expected Result

我的代码没有插入循环的最后一个值,而不是数量的完整值。

$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;
} 

1 个答案:

答案 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;
}