首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5的反向多态关系

Laravel 5的反向多态关系
EN

Stack Overflow用户
提问于 2016-10-15 23:36:56
回答 1查看 859关注 0票数 3

假设我们有以下模型:WarriorAxeSword

是否有办法使下列行为成为可能?

代码语言:javascript
复制
$warrior->weapon = $sword;
// ...

代码语言:javascript
复制
$warrior->weapon = $axe;
// ...

换句话说,是否有可能将单独的模型视为具有雄辩的的相似类型

P.S

显然,上面是一个简单的例子,说明一个问题只是为了传达它的要点。

EN

回答 1

Stack Overflow用户

发布于 2017-10-11 10:02:19

是的,你可以把weapon变成多态关系。将列weapon_typeweapon_id添加到表中,这可以在具有morphs类型的迁移文件中完成:

代码语言:javascript
复制
Schema::table('warriors', function ($table) {
    $table->morphs('weapon');
});

现在,您可以将您的关系添加到Warrior模型中:

代码语言:javascript
复制
public function weapon() {
    return $this->morphTo();
}

就这样!现在你可以添加武器,雄辩将处理其余的。这种关系甚至支持急切的加载。我建议您的所有武器都应该实现一个接口,这样您就可以知道它们有哪些共同的方法,但不幸的是,无法通过PHP类型系统雄辩地为您执行该接口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40065320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档