2017-09-25 81 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再次同步$属性。 更新后()方法模型不需要创建新的选择查询只是更新$原始

相关问题