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

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);

以上是 Laravel,sync()-如何同步数组并传递其他数据透视字段? 的全部内容, 来源链接: utcz.com/qa/406605.html

回到顶部