当前位置: 首页 > 面试题库 >

Laravel,sync()-如何同步数组并传递其他数据透视字段?

夔桐
2023-03-14
问题内容

Laravel官方文档具有以下sync()功能:

$user->roles()->sync( array( 1, 2, 3 ) );

您还可以将其他数据透视表值与给定的ID相关联:

$user->roles()->sync( array( 1 => array( 'expires' => true ) ) );

在后一个示例中,仅添加了一个枢轴行。我不明白的是,如果要同步的行多,如何关联其他数据透视表记录?

提前致谢。


问题答案:

为了sync与自定义数据透视表一起使用多个模型,您需要:

$user->roles()->sync( array( 
    1 => array( 'expires' => true ),
    2 => array( 'expires' => false ),
    ...
));

就是

sync( array( 
    related_id => array( 'pivot_field' => value ),
    ...
));

编辑

回答评论:

$speakers  = (array) Input::get('speakers'); // related ids
$pivotData = array_fill(0, count($speakers), ['is_speaker' => true]);
$syncData  = array_combine($speakers, $pivotData);

$user->roles()->sync($syncData);


 类似资料:
  • 我正在制作一个VueJS表单,用户可以在其中编辑一个步骤。一个步骤可以有许多父产品。逻辑是一个步骤可以属于多个产品。我有一个名为products、product_step(透视表)和steps的表。 当用户第一次加载页面时,该数组将填充此stap的父产品。 此阵列将根据用户决定在前端执行的操作进行更改。假设他们希望产品n不再具有此步骤的访问权限。在这种情况下,产品将从阵列中删除。 我面临的问题是,

  • 问题内容: 用户模型: 职位模型: 在表单提交时,我有两个数组: 使用 可以按预期将position_user表与用户和相应的位置ID同步。 但是我不知道如何填充多余的字段(“ company_id”) 这是我期望的工作方式: 我已经阅读了手册,但是我只是看不到如何处理这些数组,因为手册中的示例似乎与以下情况有关:要填充的额外字段不是多个项目的数组: 我尝试使用此答案 合并两个数组: 并获得$ s

  • 我正在尝试保存数据透视表中多列的数据。但是,数据没有保存。下面是我正在做的事情: 表 刀片 如果我只使用checkbox来同步benefit_id和user_id,它就能工作。但如果添加额外的数据amount1和amount2,则不起作用。 控制器 事先谢谢你的帮助。

  • 我在我的透视表中有一个额外的用户名列,如何将用户名与角色同步? pivot表 我需要在字段中同步用户名 这是更新功能,我在其中添加了 这是我的中的关系 下面是表迁移 这是我在转储请求并验证用户名时得到的结果 转储代码

  • 事实上,我的问题很简单,但我找不到任何答案。 我使用的是Laravel Elotent,我有3张桌子: 一个数据透视表叫做: 我已经从我的公司对象中获得了,我正在尝试获取

  • 在Laravel 4中,当使用4.2文档中描述的多对多关系时,我如何让Laravel为我创建透视表? 我是否需要在我的迁移中为所涉及的两个模型添加一些东西?是否需要手动创建数据透视表的迁移?或者Laravel如何知道创建透视表? 到目前为止,我所做的一切就是将