代码之家  ›  专栏  ›  技术社区  ›  lky

Laravel-将模型保存到$existing变量以检查字段是否已更新?

  •  0
  • lky  · 技术社区  · 2 年前

    我试图将一个模型实例存储到一个变量中,以便能够像这样存储现有的值:

        $meal_booking = MealBooking::where('date', $date)
            ->first();
    
        $existing_meal_booking = $meal_booking;
    
     
        $meal_booking->date = $date;
        $meal_booking->save();
    
    
        dump($meal_booking);
        dump($existing_meal_booking);
    

    然而,当我转储$existing_MEIN_booking变量时,它会显示更新,尽管这应该只针对$MEIN_booking变量进行更新。我不确定为什么更新和保存$MEIN_booking也会更新$existing_MEIN_booking?

    任何关于我如何解决这个问题的帮助都会很好,我需要能够在我的逻辑中比较模型。谢谢

    1 回复  |  直到 2 年前
        1
  •  1
  •   Kevin Bui    2 年前

    我相信这是编程的基础。

    $meal_booking 是一个对象,属于引用类型。所以当你用另一个变量赋值时。

    $existing_meal_booking = $meal_booking;
    

    它们都指同一个对象。

    您想要一份独立的不存在的 $MEAT_预订 物体,请使用 replicate 方法:

    $existing_meal_booking = $meal_booking->replicate();
    

    如果要跟踪模型对象上发生的更改,我建议使用 model events .