Php 拉威尔模型扩展

Php 拉威尔模型扩展,php,laravel,Php,Laravel,我有一个关于模型结构的问题 我创建了一个名为User.php的模型 在从DB获取记录之后,我希望初始化另一个类,该类基于DB中的值扩展用户类。即,存在来自DB用户的记录 id = 1 name = John type = 1 如果type=1,我想初始化其他类,例如Admin 和文件夹结构将是 模型 -User.php -用户类型 -Admin.php 这怎么可能实现呢 谢谢您可以通过使用for多态关系来实现这一点。假设一个用户可以通过两个模型“Admin”和“Marketer”进行扩展,它们

我有一个关于模型结构的问题

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

在从DB获取记录之后,我希望初始化另一个类,该类基于DB中的值扩展用户类。即,存在来自DB用户的记录

id = 1
name = John
type = 1
如果type=1,我想初始化其他类,例如Admin

和文件夹结构将是

模型 -User.php -用户类型 -Admin.php

这怎么可能实现呢


谢谢

您可以通过使用for多态关系来实现这一点。假设一个用户可以通过两个模型“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();
      }
 }
当然,您还需要将两列添加到您的用户模型
extendeable_id
extendeable_type
,以保持关系


要了解更多信息,请查阅laravel文档

谢谢。但是它是如何可能的,例如,$user=user::findOrFail($id);基于类型值后,继续使用$user作为管理员或营销人员?
$user->extendeable
将是管理员或营销人员的模型。获取“Admin”是否正确用户我需要直接调用Admin类?因为我在上面没有看到任何关于可扩展类型的信息,所以我修改了他们的示例-他们选择在注释上显示多态关系-所以他们的列是
可注释类型
可注释id
->对于您的情况,我认为“可扩展”更合适,但是你可以把它改成你想要的任何东西。