首页 > 解决方案 > Laravel firstOrNew() 函数更新现有记录但不保存新记录

问题描述

下面的代码应该使用相同的按钮更新和保存weekly_item。更新工作正常。我已经在数据库中手动添加了一条记录并对其进行了更新。但是当谈到保存功能而不是保存数据时。

public function store(){

        $WeeklyItems = weekly_item::firstOrNew(['item_id'=>request('item_id')],
                                               ['restaurant_id'=>request('restaurant_id')],
                                               ['avil_date'=>request('avile_date')],
                                                ['start_time'=>request('start_time')]
                                               );

        
        $WeeklyItems->item_id = request('item_id');
        $WeeklyItems->restaurant_id = request('restaurant_id');
        $WeeklyItems->start_time=request('start_time');
        $WeeklyItems->end_time=request('end_time');
        $WeeklyItems->tiffin=request('tiffin-switch');
        $WeeklyItems->lunch=request('lunch-switch');
        $WeeklyItems->snacks=request('snacks-switch');
        $WeeklyItems->dinner=request('dinner-switch');
        $WeeklyItems->special=request('special-switch');
        $WeeklyItems->extend=request('extend-avil');
        $WeeklyItems->unit=request('unit');
        $WeeklyItems->quantity=request('quantity');
        $WeeklyItems->avil_date=request('avil_date');
    
        $WeeklyItems->save();

        editWeeklyItem(request('item_id'),request('restaurant_id'));

    }

标签: phpmysqllaravel

解决方案


我受够了。尝试了所有内置函数(firstOrNew、firstOrCreate...等)但失败了。现在我使用两种不同的方法进行创建和更新操作。保存操作工作正常。但是更新方法不起作用。有人请

public function updateWeeklyItem(){
        
        $item_id=request('item_id');
        $restaurant_id=request('restaurant_id');
        $avil_date=request('avil_date');


        weekly_item::where(function($query) use ($item_id, $restaurant_id,$avil_date){
            $query->where('item_id', $item_id)
        ->where('restaurant_id', $restaurant_id)
        >where('avil_date', $avil_date);
         })->update ([
        'start_time'=>request('start_time'),
        'end_time'=>request('end_time'),
        'tiffin-switch'=>request('tiffin-switch'),
        'lunch-switch'=>request('lunch-switch'),
        'snacks-switch'=>request('snacks-switch'),
        'dinner-switch'=>request('dinner-switch'),
        'special-switch'=>request('special-switch'),
        'extend-avil'=>request('extend-avil'),
        'unit'=>request('unit'),
        'quantity'=>request('quantity')
        ]);

        editWeeklyItem(request('item_id'),request('restaurant_id'));
    }

推荐阅读