雄辩push()和save()的区别
我已经读了关于雄辩的文档,并且被push()部分所吸引。 它说,
有时候,你可能不仅要保存模型,还要保存所有的关系。 为此,您可以使用push方法:
挽救一个模型和关系
$user->push();
在这里看到链接
不好意思,但是我保存()和push()之间的区别有点模糊。 我希望有人能为我解决这个问题。 谢谢。
inheritance人幕后的魔力
/** * Save the model and all of its relationships. * * @return bool */ public function push() { if ( ! $this->save()) return false; // To sync all of the relationships to the database, we will simply spin through // the relationships and save each model via this "push" method, which allows // us to recurse into all of these nested relations for the model instance. foreach ($this->relations as $models) { foreach (Collection::make($models) as $model) { if ( ! $model->push()) return false; } } return true; }
它只是表明push()
会更新所有与所涉及的模型有关的模型,所以如果你改变了任何关系,那么调用push()
它将更新该模型,以及它的所有关系。
$user = User::find(32); $user->name = "TestUser"; $user->state = "Texas"; $user->location->address = "123 test address"; //This line is a pre-defined relationship
如果你在这里,只是…
$user->save();
然后地址不会被保存到地址模型….但如果你..
$user->push();
然后它将保存所有的数据,并将地址保存到地址table/model
,因为您在User model
定义了该关系。
push()
也会更新所有相关模型的所有updated_at时间戳,
希望这将清除的东西….
假设你这样做了:
$user = User::find(1); $user->phone = '555-0101'; $user->address->zip_code = '99950';
您只是对两个不同的表进行了更改,以便保存它们:
$user->save(); $user->address->save();
要么
$user->push();
push()只能用于更新现有的模型实例,而不是创build一个新的模型实例。 简单地说:push()更新,而不是插入。