当前位置: 首页 > 知识库问答 >
问题:

雄辩的推()和存()差

佘飞鸣
2023-03-14

我读过laravel 4文档中关于ququent的内容,并且对push()部分很感兴趣。它说,

有时,您可能不仅希望保存模型,还希望保存其所有关系。为此,您可以使用推送方法:

保存模型和关系

$user-

请参阅此处的链接

抱歉,我对save()和push()之间的区别有点模糊。我希望有人能帮我解决这个问题。非常感谢。


共有3个答案

姚烨
2023-03-14

push()只能用于沿关系更新现有模型实例,而不能创建新的模型实例。只需说:push()更新而不是插入。

柳玄裳
2023-03-14

假设你做到了:

$user = User::find(1);

$user->phone = '555-0101';
$user->address->zip_code = '99950';

您刚刚对两个不同的表进行了更改,要保存它们,您必须:

$user->save();
$user->address->save();

或者

$user->push();
阎智
2023-03-14

这就是幕后的魔力。。。

/**
 * 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