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

Laravel雄辩-附加vs同步

魏鹤轩
2023-03-14

Laravel 4雄辩的ORM中的attach()sync()之间有什么区别?我试着四处看看,但什么也找不到!

共有2个答案

郑星雨
2023-03-14

让它变得更简单:

函数只将记录添加到Pivot表中。

sync函数用新记录替换当前记录。这对于更新模型非常有用。

例子:

假设您创建了一个贴子,贴子上有许多标签,标签ID为[1,2,3]。

用户可以更新帖子及其标签。

用户将向您发送新标签ID的[3,4,5]。

如果使用sync功能,帖子的新标签将仅为[3,4,5]。

如果使用attach功能,帖子的新标签将为[1,2,3,4,5]。

陶超
2023-03-14

附加():

  • 使用多对多关系时插入相关模型
  • 不需要数组参数

例子:

$user = User::find(1);
$user->roles()->attach(1);

sync():

附加()方法类似,sync()方法用于附加相关模型。然而,主要区别是:

  • sync()接受要放在数据透视表上的ID数组
  • 其次,最重要的是,如果数组中不存在模型,sync方法将从数据透视表中删除数据,并仅将新项插入数据透视表

例子:

用户角色

id  user_id role_id
1    12       1
2    12       5
3    12       2
$user = User::find(12);
$user->roles()->sync(array(1, 2, 3));

上述操作将删除:

id  user_id role_id
2    12       5

并将role_id 3插入表中。

用户角色表

id  user_id role_id
1    12       1
3    12       2
4    12       3

 类似资料:
  • 我有以下三种型号: 类别字段: 分类选项: 当我运行这个查询时,我得到了这个错误: SQLSTATE[42S22]:列未找到: 1054未知列'field ID'在'where子句'(SQL:选择*从其中=3)任何帮助请知道是什么问题!!?

  • 问题内容: 我已经能够使用以下原始sql获取查询结果: 但是我还不能使它雄辩地工作。 根据一些类似的答案,我曾尝试在或中执行功能,但尚未过滤每个人的操作。就目前而言: 我至少在标题 大致 正确的方向,正确的…? 如果相关,则该模型具有两个关系: 问题答案: 因此,作为参考,我像这样解决了它: 奇怪的是,其中的子句需要语音标记才能使变量正确通过sql查询(同样,“ 2”似乎不起作用,而“ 2”却可以

  • 嘿,伙计们,我是拉威尔的新朋友。我有这张桌子 我如何能够获取每个科目的is_correct列计数? 谢谢伙计们!

  • 我有这个模型文件:- 这是我的查询代码:- 我正在尝试附加getFacilityAttribute以包含在结果数组中。 我试图使用受保护的$append模型数组,但得到错误:- 调用未定义的方法照亮\数据库\雄辩\关系\属于::fac性()

  • 我有三种模式——博客、帖子、评论。博客有很多帖子,帖子有很多评论 当我写作时 它会给所有的博客发帖子和评论。但我将如何获得那些由管理员用户创建的博客,即评论表中的用户id。在哪里写入

  • 我是新来的拉威尔,我曾在codeigniter工作。我对雄辩的ORM概念着迷。我有一个关于雄辩能力的一般性问题。ORM的功能是什么,我的意思是我们可以获得相关表行的级别。如果你看“http://four.laravel.com/docs/eloquent#relationships 一对一 一对多 多对多 多态关系 在我看来,“一对一”意味着一级。表1表2