Laravel模型扩展
问题描述:
我有一个关于模型结构的问题。Laravel模型扩展
我创建了一个名为user.php的
比我想以后得到数据库的记录初始化其基于从DB值扩展User类另一个类的模型。即有数据库用户的记录
id = 1
name = John
type = 1
如果type = 1我想要启动其他类,例如,联系
和文件夹结构将
模型 - user.php的 - UserTypes - admin.php的
它怎么可能实现呢?
谢谢
答
你可以通过使用多态关系来实现。比方说,用户可以通过两种模式“管理员”和“营销”进行扩展,他们将寻找类似的东西:
class Admin extends Model
{
public function user() {
return $this->morphOne('App\User', 'extendable');
}
}
和用户模式:
class User extends Model
{
public function extendable() {
return $this->morphTo();
}
}
当然,你还需要将两列添加到您的用户模型extendable_id
和extendable_type
以保存关系。
要阅读更多,你可以检查laravel文档https://laravel.com/docs/5.5/eloquent-relationships#polymorphic-relations
谢谢。但是,如何通过,例如, $ user = User :: findOrFail($ id);基于TYPE值的 继续与作为Admin或Marketer的$ user一起使用? –
'$ user-> extendable'将成为管理员或营销者模型。 – inet123
我是否正确,为了得到“管理员”用户,我需要直接调用管理员类? –