Laravel:带有附加透视字段的 Sync()
在 Laravel 中,sync() 函数用于将模型关系与ID 集。但是,也可以在同步时指定其他枢轴字段。
默认用法:
如 Laravel 文档中所述,您可以同步一组简单的 ID像这样:
<code class="php">$user->roles()->sync([1, 2, 3]);</code>
与数据透视表字段同步:
如果要将特定数据透视表值与 ID 相关联,可以将它们指定为数组:
<code class="php">$user->roles()->sync([ 1 => ['expires' => true] ]);</code>
此示例添加一个数据透视行,并将过期字段设置为 true。
具有自定义数据的多个数据透视记录:
至使用自定义数据透视表数据同步多个模型,您可以使用以下语法:
<code class="php">$user->roles()->sync([ 1 => ['expires' => true], 2 => ['expires' => false], ... ]);</code>
此示例同步两个角色,每个角色都有自己的过期值。
数组输入示例:
如果您以数组形式接收 ID 和数据透视数据,则可以使用 array_combine() 创建同步数据:
<code class="php">$speakers = (array) Input::get('speakers'); // Get related IDs $pivotData = array_fill(0, count($speakers), ['is_speaker' => true]); $syncData = array_combine($speakers, $pivotData); $user->roles()->sync($syncData);</code>
通过遵循这些准则,您可以与 Laravel 中的自定义数据透视字段有效同步数据。
以上是如何在 Laravel 中将模型关系与附加透视字段同步?的详细内容。更多信息请关注PHP中文网其他相关文章!