2017-09-25 46 views
0

每當我像這樣運行爲什麼保存只能用於創建和不更新?

$foo = Foo::find(1); 
echo $foo->bar; // echoes 400 
$foo->bar = 300; 
echo $foo->bar; // echoes 300 
$foo->save(); 
echo $foo->bar; // echoes 300 
$foo = Foo::find(1); 
echo $foo->bar; // echoes 400 - it didn't save! no changes to the table 

什麼也沒有發生代碼。但這個作品:

$foo = new Foo; 
$foo->bar = 200; 
echo $foo->bar; // echoes 200; 
$foo->save(); // a new entry is added to my table 

我無法更新(更改模型,但它不保存),但添加新條目的作品。爲什麼?

(美孚延伸Model類,杆爲一列)

+0

你確定你的對象有一個ID密鑰?否則,Laravel不知道哪一行更新。 –

+0

您使用的是什麼版本的Laravel?你使用的是哪個數據庫?你還可以發佈你的模型的內容? –

+0

我能想到'save()'wont * save *的唯一場景就是如果你正在保護'bar'不受大衆分配的影響! – teeyo

回答

0

我有 'ID' 作爲ID的首部。將它更改爲'id'使一切正常。

0

每個模型有2個屬性$原始和$屬性。 Model 如果您使用查找,模型同步結果爲原始。 Method

並且您設置了新數據,只更新數據庫值的$ attributes ['bar'],$ original ['bar']。

如果使用save()方法,則更新數據庫和$ original再次同步$屬性。 更新後()方法模型不需要創建新的選擇查詢只是更新$原始

相關問題