2017-07-31 174 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。再見 –