【发布时间】:2017-03-06 12:34:02
【问题描述】:
我的数据透视表总共包含 3 列:
- user_id
- role_id
- 群
组只是一个整数。我希望能够同步用户及其角色,但只同步属于特定组的用户。
如果我运行一个简单的 sync([1,2,3]),它将从数据透视表中删除所有内容,完全忽略该组。
我有几个解决方案:
选项a:
- 为 UserRoles 创建一个新模型。
UserRoles::where('group', '=', '1');User::roles()->detach(list_of_ids_from_previous_query);User::roles()->attach(list_of_desired_ids_for_group_1);
选项 b:
User::roles()->all();- 花式合并
$list_of_desired_ids_for_group_1与$list_of_ids_from_previous_query User::roles()->sync(list_of_merged_ids);
Eloquent 还有其他方法可以做到这一点吗?我认为选项 (a) 更容易实现,因为我不必合并 ID 和组的 2 个多维数组。而且,选项 (a) 可能需要更多的数据库密集型,因为它需要在所有组行上运行 DELETE 和 INSERT。
【问题讨论】:
标签: php mysql laravel eloquent laravel-5.4