[已解决] 求助如何设计多对多关系(群组-成员)
本小白今天在做一个小的群组系统时遇到了一些问题,
群组表 groups
,用户表 users
,关系表group_user
(关系表中增加一个额外的字段passed
,为0
表示等待审核;为1
表示通过审核,可直接显示在群组成员中)
一个用户申请加入群组,然后群组的管理员可以看到申请并操作是否接受申请。
当一个用户提交申请后,直接在关系表中添加一条数据(group_id, user_id, passed)->(2,9,0)
然后回到群组主页,那么问题来了。
问题1:如何获取当前用户与群组的关系?
不知道怎么直接获取关系表中除两个id之外的内容,也就是说我没法直接得到关系表中的passed
字段,我暂时只想到另外建一个GroupUser
模型来GroupUser::where('group_id', $group->id)->where('user_id', \Auth::user()->id)->first()->passed
,是否有更好的方法获取当前用户在这个群组中的状态?
已解决:$group->users()->whereId(\Auth::user()->id)->first()->pivot->passed
问题2:获取已通过审核的用户列表?
$group->users()->("在关系表中passed等于1")->get()
???
已解决:$group->users()->wherePivot('passed', 1)->get()
总觉得新建一个GroupUser
就不那么优雅了,我是处女座隔壁的。:sob:
也许把审核状态passed
放到关系表里就是个悲剧,那么我应该如何更好地设计这样的申请/审核过程?
求指导,谢谢!:smile:
推荐文章: