2017-09-15 120 views
-2

我有一个关于模型结构的问题。Laravel模型扩展

我创建了一个名为user.php的

比我想以后得到数据库的记录初始化其基于从DB值扩展User类另一个类的模型。即有数据库用户的记录

id = 1 
name = John 
type = 1 

如果type = 1我想要启动其他类,例如,联系

和文件夹结构将

模型 - user.php的 - UserTypes - admin.php的

它怎么可能实现呢?

谢谢

回答

1

你可以通过使用多态关系来实现。比方说,用户可以通过两种模式“管理员”和“营销”进行扩展,他们将寻找类似的东西:

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

+0

谢谢。但是,如何通过,例如, $ user = User :: findOrFail($ id);基于TYPE值的 继续与作为Admin或Marketer的$ user一起使用? –

+0

'$ user-> extendable'将成为管理员或营销者模型。 – inet123

+0

我是否正确,为了得到“管理员”用户,我需要直接调用管理员类? –