Laravel官方文档具有以下sync()功能:
sync()
$user->roles()->sync( array( 1, 2, 3 ) );
您还可以将其他数据透视表值与给定的ID相关联:
$user->roles()->sync( array( 1 => array( 'expires' => true ) ) );
在后一个示例中,仅添加了一个枢轴行。我不明白的是,如果要同步的行多,如何关联其他数据透视表记录?
提前致谢。
为了sync与自定义数据透视表一起使用多个模型,您需要:
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);