为什么保存仅适用于创建而不是更新?

时间:2017-09-25 09:11:15

标签: php laravel crud

每当我运行像这样的代码

$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

我无法更新(对模型进行了更改但不保存),但添加新条目有效。为什么呢?

(Foo扩展了Model类,bar是一列)

2 个答案:

答案 0 :(得分:0)

我有'Id'作为ID的标题。将其更改为“id”使一切正常。

答案 1 :(得分:0)

每个模型都有2个属性$ original和$ attributes。 Model 如果您使用“查找”,则将同步结果建模为原始。Method

并且您设置了新数据,只更新数据库值上的$ attributes [' bar'],$ original [' bar']。

如果使用save()方法,则更新数据库和$ original再次同步$ attributes。 在update()方法模型之后不需要创建新的选择查询只需更新$ original