Laravel foreach保存数据

时间:2018-10-26 11:11:46

标签: laravel for-loop

我有一个循环来创建或更新数据,如下所示

input

我不知道为什么我只能更新$ goods_list的最后一个值。 帮帮我,谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用array_pop删除最后一个元素,并使用array_push插入新元素。举个例子:

<?php

 $initial_array = [1,2,3];

function change_last($array, $value) {
    $removed_element = array_pop($array);
    array_push($array, $value);
    return $array;    
}

$changed_array = change_last($initial_array, 4);
print_r($changed_array);
?>

,这里是一个实时示例: https://tech.io/snippet-widget/ZfEzgjj

答案 1 :(得分:0)

我解决了我的问题!
我不知道为什么,但是当我换到

后,我终于可以工作了
        foreach ($goods_list as $goods) {
            $goods_seq = $goods['goods_seq'];
            $num = $goods['num'];

            $w_estim = WEstimMp::where('event_seq', $event_seq)
            ->where('goods_seq', $goods_seq)
            ->first();

            if (!isset($goods['note'])) {
                $goods['note'] = '';
            }
            $now = (new \Carbon\Carbon())->format('Y-m-d H:i:s');
            if (!isset($w_estim)) {
                $w_estim = new WEstimMp;
                $w_estim->event_seq = $event_seq;
                $w_estim->goods_seq = $goods_seq;
                $w_estim->mp_item_category = $mp_item_category;
                $w_estim->num = $num;
                $w_estim->note = $goods['note'];
                $w_estim->proc_flg = 2;
                $w_estim->update_dtime = $now;
                $w_estim->save();
            } else {
                $w_estim = WEstimMp::where('event_seq', $event_seq)
                ->where('goods_seq', $goods_seq)
                // ->first()
                ->update([
                    'num' => $num,
                    'note' => $goods['note'],
                    'proc_flg' => 2,
                    'update_dtime' => $now,
                ]);
            }