繁体   English   中英

Laravel 5中的反向多态关系

[英]Reverse polymorphic relation in Laravel 5

假设我们有以下模型: WarriorAxeSword

有没有办法使以下行为成为可能?

$warrior->weapon = $sword;
// ...

要么

$warrior->weapon = $axe;
// ...

换句话说, 是否可以将单独的模型视为与Eloquent具有相似类型

PS

显然,以上是一个仅用于传达其要旨的问题的简化示例。

是的,您可以使weapon成为多态关系 在表中添加weapon_typeweapon_id列,可以在具有morphs类型的迁移文件中完成:

Schema::table('warriors', function ($table) {
    $table->morphs('weapon');
});

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

public function weapon() {
    return $this->morphTo();
}

而已! 现在,您可以添加武器,而Eloquent将负责其余的工作。 该关系甚至支持预加载。 我建议您所有的武器都应实现一个接口,以便您了解它们共有的方法,但是不幸的是,Eloquent无法通过PHP类型系统为您实施该接口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM