我的系统需要登录user
,teacher
和guardian
。我对这个主题进行了一些研究,很多人都在讨论如何使用user type
功能。但我不认为这对我有用,或者我不明白如何让它以这种方式运作。
当我创建一名教师(只有管理员应该做的事情)时,我关心的一件事是教师可以教授多个科目和课程。因此,简而言之,教师与学科之间存在着多对多的关系。每当我插入老师时,我必须指定他/她教授的课程。 监护人也与许多学生有关,每当我插入监护人时,我必须指明监护人所关联的学生。
我可以为所有这些用户(管理员,监护人,员工和教师)创建单独的迁移,模型控制器和视图,但有些东西告诉我这不是解决问题的有效方法。解决这个问题的其他方法是什么。
解决此问题的其他方法是什么,其中我可以使用一次登录来验证不同类型的用户,返回特定于用户类型的视图。
有没有办法在管理员插入教师和监护人时为他们生成用户帐户? 感谢您的关注!
答案 0 :(得分:0)
无论何时创建用户(任何类型的用户),您都可以在用户表中使用列设置其类型,就像用户表user_type中有一列一样。
此列将像admin的标志值1,教师的2,父母的3等等。
现在,只要您的用户登录,您就可以在会话中设置该数据,或者如果您在laraval中使用AUTH,您可以轻松地在控制器中获取该数据,查看您想要的位置 像这样的Auth :: user() - > user_type
所以现在我有一些东西可以相互比较,所以通过一些小的条件,你可以轻松设置用户需要依赖他/她的类型。
如果所有用户仅依赖于类型而不是这种方式就足够了,但是如果要为不同的用户或不同类型的用户设置各种权限,则需要访问控制系统。现在有很多套餐
https://github.com/Zizaco/entrust我发现这对我很好。
答案 1 :(得分:0)
您需要在User
和User
之间设置manyToMany关系。
然后,您可以通过检查数据透视表行是否存在来检查用户是学生还是监护人。 User
- Subject
关系也是如此。
例如,可以将数据透视表称为guardian_studnet
,其中可以包含两个字段:guardian_id
和student_id
,两者都将指向users
表{{ 1}}列。
在这种情况下,同一个用户可以是学生和监护人,但我不确定这是多么必要。
不要忘记为数据透视表字段编制索引,作为进一步优化,您可以在id
模型中添加teacher
,student
布尔值。但是,只要关系状态发生变化,您就需要更新此字段。虽然不确定收益。
查看文档here。