我读过laravel 4文档中关于ququent的内容,并且对push()部分很感兴趣。它说,
有时,您可能不仅希望保存模型,还希望保存其所有关系。为此,您可以使用推送方法:
保存模型和关系
$user-
请参阅此处的链接
抱歉,我对save()和push()之间的区别有点模糊。我希望有人能帮我解决这个问题。非常感谢。
push()只能用于沿关系更新现有模型实例,而不能创建新的模型实例。只需说:push()更新而不是插入。
假设你做到了:
$user = User::find(1);
$user->phone = '555-0101';
$user->address->zip_code = '99950';
您刚刚对两个不同的表进行了更改,要保存它们,您必须:
$user->save();
$user->address->save();
或者
$user->push();
这就是幕后的魔力。。。
/**
* 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();
然后它将保存所有数据,并将地址保存到地址表/模型
中,因为您在User Model
中定义了该关系。
push()
希望这能解决问题。。。。
问题内容: 我想返回所有类别的所有项目。 此查询我现在返回的类别为1或2或3的项目。我需要返回的类别为1和2以及3的项目。 我怎样才能做到这一点? 问题答案: 试试这个: 使用查询将仅返回具有所有列出类别的项目。
我有一个表事务与复合主键id,Nom,日期和一个表Cour与Nom作为主键和一个事务有关一个Cour。 我怎样才能得到一个有口才关系的特定交易的课程?
我正在努力使用laravel函数 我的代码在这里: 存储时:公司存储良好,但对于公司人员,它将存储到 Larave Documentations说: 有时,您可能不仅希望保存模型,还希望保存其所有关系。为此,您可以使用推送方法: 怎么了?
问题内容: 插入新记录或更新(如果存在)的快捷方式是什么? 问题答案: 这是“ lu cip”正在谈论的完整示例: 以下是Laravel最新版本上的文档更新链接 此处的文档:更新的链接
Laravel Eloquent的save()方法实质上是执行查询生成器的工作吗? 查询生成器: 雄辩的: 如果这是真的,那么Eloquent的也是如此吗?我正在看Laravel的官方视频教程,我看到作者在控制器中使用了雄辩的和。这就是查询生成器和雄辩的区别吗?我们可以使用雄辩的内部控制器?
我已经搜索了两个小时,了解如何使用groupBy和orderBY构建一个有说服力的查询。 这是我的情况:我有一个表订单与这些列: 我想买3种最畅销的产品。为此,我需要构建一个查询,它将ProductBy中的所有数据分组,将quantity中的主题求和,并将主题按desc排序。但这非常困难。 这是我的实际问题: 我得到这个错误: SQLSTATE[42000]:语法错误或访问冲突: 1055 ORD