2017-07-31 137 views
1

我期待实施一个网站,处理教师,学生和家长。在我创建的数据库中,我创建了一个user表和3个子表:teachers,students,parents。 请参阅下表结构数据库继承Laravel 5.4

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。

+0

学生表和老师表中用户表的FK在哪里 –

+0

FK在'users_id'上。 'users_id'是表'用户,老师'和'父母'的PK,而且是指用户的FK。 –

+0

对以上评论发生了错误:\t 'users_id'是学生,教师和父母表的PK,也是指用户的FK。 –

回答

1

我给你一些提示,我觉得你可以做休息,因为你的问题不是具体的我猜你的心思,你怎么能与/连接表,所以

  1. 创建三个模式让说User, Student, Teacher
  2. 学生&教师模型创建方法像下面
public function user() 
{ 
    return $this->hasOne(User::class, 'id', 'users_id'); 
} 

现在,你可以查询,如:

$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 列分隔。

+0

非常感谢您的帮助:)它解决了我的问题。并感谢您的建议,我将实施一个新的ID列作为FK。再见 –