【问题标题】:Database inheritance Laravel 5.4数据库继承 Laravel 5.4
【发布时间】:2018-01-07 01:37:48
【问题描述】:

我期待着建立一个与教师、学生和家长打交道的网站。在我创建的数据库中,我创建了一个 user 表和 3 个子表:teachersstudentsparents。 见下表结构

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          |
+--------------+-------------------+---------------------+

而且 parents 表也有一个对应于用户 ID 的 PK。 我刚开始学习 laravel,我真的很想知道如何用 Laravel 5.4 雄辩地正确处理这个问题。

【问题讨论】:

  • 学生表和教师表中User表的FK在哪里
  • FK 在users_idusers_id 是表users, teachersparents 的主键,也是指用户的外键。
  • 上面的评论搞错了:users_id是表students, teachersparents的PK,也是一个FK,指的是用户。

标签: php database laravel laravel-5.4


【解决方案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 列分隔。

【讨论】:

  • 非常感谢您的帮助 :) 它解决了我的问题。感谢您的建议,我将实施一个新的 id 列作为 FK。再见
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
  • 2014-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多