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

Laravel - save model to $existing variable to check is field has been updated?

我正在尝试将模型实例存储到变量中,以便能够像这样存储现有值:

    $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_meal_booking var 时,它会显示更新,尽管这应该只针对 $meal_booking var 进行更新。我不确定为什么更新和保存 $meal_booking 也会更新 $existing_meal_booking?

任何有关如何解决此问题的帮助都将非常有用,我需要能够稍后在我的逻辑中比较模型。谢谢

我相信这是编程的基础。

$meal_booking是一个对象,是引用类型。所以当你给它分配另一个变量时。

$existing_meal_booking = $meal_booking;

它们指的是同一个对象。

您想要 $meal_booking 对象的单独 non-existing 副本,请使用 replicate 方法:

$existing_meal_booking = $meal_booking->replicate();

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