【发布时间】:2017-01-12 06:19:27
【问题描述】:
我知道问题标题有点模糊,但这是我想要做的:
我正在从第三方 api 检索用户所属的组列表。在某些情况下,用户将是一个组的“管理员”,而其他时候,只是一个“成员”。 抛开细节不谈,我从我的控制器调用我的 api 类上的一个方法,该方法命中 api,检索用户的组,确定他们是否是“管理员”,然后返回一个数组数组,其中每个组的信息包括一个“角色”键,表示他们是否是“管理员”。所以我返回的数组看起来像这样:
[
0 => [
'unique_id' => 1243657,
'name' => 'Group1',
'city' => 'Bluesville',
'state' => 'IN',
'role' => 'admin'
],
1 => [
'unique_id' => 4324567,
'name' => 'Group2',
'city' => 'New Curtsbourough',
'state' => 'WI',
'role' => 'member'
],
2=> [
'unique_id' => 87463652,
'name' => 'Group3',
'city' => 'Samsonite',
'state' => 'MN',
'role' => 'member'
]
]
现在,我需要获取这些组并将它们存储在数据库中,我首先检查该组在数据库中不存在,然后在需要时添加它。当然,我要离开这个角色,因为它只与当前用户相关。
接下来,我需要将当前用户连接到刚刚检索到的这些组。我设置了一个数据透视表,当前包含 user_id 和 group_id。
问题是,如何最好地处理这个问题。在我决定我需要知道一个成员是否是“管理员”之前,我只是让我的“createGroups”方法返回一个主键数组给我,然后将该数组传递给对
的调用$user->groups()->sync($array_of_ids);
但是,添加了“角色”信息后,它就没有那么简单了。
基本上,在生命周期的这一点上,我可以访问一组包含字段“角色”的组。我的想法是在数据透视表中添加一个“角色”字段,然后将包含“user_id”、“group_id”和“role”。这意味着我不仅需要包含检索到的组的 $groups 数组,还需要这些组的 ID,因为它们与我的数据库有关。
我可以做一些事情,但我担心它会非常混乱和低效。
有人想吗??
【问题讨论】:
标签: php laravel pivot relationships