Php 数据库继承Laravel 5.4

Php 数据库继承Laravel 5.4,php,database,laravel,laravel-5.4,Php,Database,Laravel,Laravel 5.4,我期待着实现一个网站与教师,学生和家长处理。在我创建的数据库中,我创建了一个用户表和3个子表:教师,学生,家长。 见下表结构 User table +--------+----------+----------+-------+ | id (PK)| username | password | email | +--------+----------+----------+-------+ | 1 | user1 | 123 | ... | +--------+--

我期待着实现一个网站与教师,学生和家长处理。在我创建的数据库中,我创建了一个
用户
表和3个子表:
教师
学生
家长
。 见下表结构

User table
+--------+----------+----------+-------+
| id (PK)| username | password | email |
+--------+----------+----------+-------+
| 1      | user1    | 123      | ...   |
+--------+----------+----------+-------+
| 2      | user2    | 132      | ...   |
+--------+----------+----------+-------+
| 3      | user3    | 321      | ...   |
+--------+----------+----------+-------+

Student table
+---------------+--------------+
| users_id (PK) | class        |
+---------------+--------------+
| 1             | highschool   |
+---------------+--------------+
| 3             | middleschool |
+---------------+--------------+
Teacher table
+--------------+-------------------+---------------------+
| users_id (PK)| subscription_type | end_of_subscription |
+--------------+-------------------+---------------------+
| 2            | monthly           | 2017-10-25          |
+--------------+-------------------+---------------------+
父表也有一个对应于用户id的PK。
我刚开始学习laravel,我真的很想知道我如何正确处理这个问题,也许是使用laravel 5.4的雄辩。

我给你一些提示,我想你可以做休息,因为你的问题不具体,我猜你在想如何关联/连接表,所以

  • 创建三个模型,例如用户、学生、教师
  • 在学生和教师模型中,创建如下方法
  • 现在您可以进行如下查询:

    $student = Student::find($id) ;
    $name = $student->user->name;
    $email = $student->user->email ;
    Or 
    $teachers = Teacher::where('subscription_type', 'monthly')->with(['user'])->get();
    dd($teachers);
    
    我认为你需要更新你的数据库结构,你需要pk&fk 柱分离


    其中是学生表和教师表中用户表的FK。FK位于
    users\u id
    users\u id
    是表
    用户、教师和家长的主键,也是指用户的FK。在上面的评论中出错:
    users\u id
    是表
    学生、教师和家长的主键,还有一个FK,它指的是用户。非常感谢您的帮助:)它解决了我的问题。谢谢你的建议,我将实现一个新的id列作为FK。拜伊
    
    $student = Student::find($id) ;
    $name = $student->user->name;
    $email = $student->user->email ;
    Or 
    $teachers = Teacher::where('subscription_type', 'monthly')->with(['user'])->get();
    dd($teachers);