Php 拉威尔模型扩展
我有一个关于模型结构的问题 我创建了一个名为User.php的模型 在从DB获取记录之后,我希望初始化另一个类,该类基于DB中的值扩展用户类。即,存在来自DB用户的记录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”进行扩展,它们
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
->对于您的情况,我认为“可扩展”更合适,但是你可以把它改成你想要的任何东西。