我对模型结构有疑问。
我创建了一个名为User.php的模型
从DB获取记录之后,我想要根据DB的值初始化另一个扩展User类的类。即来自数据库用户的记录
id = 1
name = John
type = 1
如果type = 1,我想初始化一些其他类,例如。管理员
文件夹结构将是
模型 - User.php - UserTypes - Admin.php
如何实现这一目标?
由于
答案 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_id
和extendable_type
中添加两列来保存关系。
要了解更多信息,您可以查看laravel文档https://laravel.com/docs/5.5/eloquent-relationships#polymorphic-relations