2016-01-13 134 views
0

我正在处理的项目需要一种共享功能,这意味着当一个人创建一个练习时,他们可以选择与另一个人分享该练习,并为该练习附加一定的权限(即阅读,写或执行)。三种方式的雄辩关系

我有三个表(所有这些都有模型):用户,练习和权限。在中间我有一个exercise_permission_user表,它只有三列:exercise_id,permission_id和user_id,它们都是指向它们各自表的外键。

问题在于在Laravel 5中建立这些表格之间的三对多关系。更具体地说,当一个人分享练习时,我需要输入被共享练习的id,它所在的用户与正在被添加到exercise_permission_user表中的权限共享。然后,我需要能够查询此表的user_id并查看与某个用户共享的所有练习。如果用户Mike的ID为3,那么我想查询中间表中的该ID并找到他有权访问的练习以及他被授予的权限。

当谈到口头禅时,我仍然在学习过程中,所以任何帮助都将不胜感激。我不一定要找人为我建立这个,只需要一些帮助,这将给我提供必要的信息来完成我自己的工作。感谢所有帮助!

+0

这个问题与本网站创始人要求您“不问”的许多属性相同。 http://stackoverflow.com/help/dont-ask查询,对话和讨论的开放式请求,没有代码,没有明确的目标或系统定义。我们理解并同情你无法将这个大问题分解成可定义的第一步,但是stackoverflow不是这个头脑风暴会议的场所。 –

+0

我很抱歉。我对Stack Overflow很陌生,不能很好地找到一种描述我的问题的方式,而不是那么罗嗦。我会尽力在将来更体贴。 – Skylar01128

+0

这听起来像是你的核心问题是:“我在mysql中有三个表,我想用下面的属性对它们进行连接”。但是,然后你混合了对框架和PHP语言的要求,以及有关权限的内容。在这个头脑风暴中,我可以看到大约5个具体的问题,如果你问任何一个问题,你可能会得到接待,而聪明的人会突然间做出有意义的回应。投入一些额外的努力,向我们展示你的尝试,发生了什么,以及你期望发生的事情。 http://www.catb.org/esr/faqs/smart-questions.html#beprecise –

回答

0

我一直在努力解决这个问题几次。就我所能研究的,我没有找到一种Laravel原生的方式来编码这种三对多的关系。我通常做的是为数据透视表创建一个模型。因此,一个受保护的$ table属性设置为'exercises_permission_user'的SharedExercise模型(或您想使用的名称)。在该模型中,您可以设置与用户,练习和权限的关系。然后,您可以编写:

$sharedExercises = SharedExercise::where('user_id', $userId)->get(); 

请注意表格和型号的命名。我通常使用laravel的约定来命名表格,但是当我有这么多的3种方法时,我试图找到比约定更多描述的名称。因此,例如,可以不使用Exercises_permission_user和ExercisePermissionUser模型,也可以使用shared_exercises和SharedExercise名称。 请注意,这不是做到这一点的方法。这是我在文档中未找到约定的结果。

+0

谢谢你的回复!我不确定是否需要单独的模型,但采取这一措施确实有助于解决这个问题。我很感激帮助。 – Skylar01128