Laravel模型扩展

时间:2017-09-15 11:09:03

标签: php laravel

我对模型结构有疑问。

我创建了一个名为User.php的模型

从DB获取记录之后,我想要根据DB的值初始化另一个扩展User类的类。即来自数据库用户的记录

id = 1
name = John
type = 1

如果type = 1,我想初始化一些其他类,例如。管理员

文件夹结构将是

模型    - User.php    - UserTypes       - Admin.php

如何实现这一目标?

由于

1 个答案:

答案 0 :(得分:1)

您可以通过使用多态关系来实现这一点。假设一个用户可以通过两个模型“Admin”和“Marketer”进行扩展,它们看起来像这样:

 class Admin extends Model
 {
      public function user() {
           return $this->morphOne('App\User', 'extendable');
      }
 }

用户模型:

 class User extends Model
 {
      public function extendable() {
           return $this->morphTo();
      }
 }

当然,您还需要在用户模型extendable_idextendable_type中添加两列来保存关系。

要了解更多信息,您可以查看laravel文档https://laravel.com/docs/5.5/eloquent-relationships#polymorphic-relations