我不知道正在做什么,我有两个简单的变量:
$item = Clients::findOrFail($id);
$itemTemporary = $item;
现在,变量$itemTemporary
应该保存$item
的数据,如果我在变量$item
中有任何交互作用,则此$itemTemporary
与它无关,对吧?
$item = Clients::findOrFail($id);
$itemTemporary = $item;
print_r($itemTemporary->status); // Returns TRUE
$item->status = FALSE;
$item->save();
print_r($itemTemporary->status); // Returns FALSE
$itemTemporary->status
的更改方式如何?
答案 0 :(得分:4)
$itemTemporary
不是$item
对象的副本,而是对象标识符的副本。 (请参见Objects and References。)它指向同一对象。如果需要在更改$item
的数据时临时保留它们,则需要使用其他方法,例如克隆对象或将其转换为数组。
实际上,我认为Laravel可能对此有一种方法,所以查了一下,显然是这样的:
$itemTemporary = $item->replicate();
答案 1 :(得分:0)