Laravel 5的反向多态关系
假设我们有以下模型:一个Laravel 5的反向多态关系,laravel,laravel-5,eloquent,relationship,Laravel,Laravel 5,Eloquent,Relationship,假设我们有以下模型:一个战士、一把斧头和一把剑 有没有办法使以下行为成为可能 $warrior->weapon = $sword; // ... 或 换句话说,是否可以将不同的模型视为具有类似类型的雄辩的 附言 显然,上面是一个简化的问题示例,仅用于传达问题的要点。是的,您可以将武器a。将列武器类型和武器id添加到表中,这可以在迁移文件中使用变形类型完成: Schema::table('warriors', function ($table) { $table->morph
战士
、一把斧头
和一把剑
有没有办法使以下行为成为可能
$warrior->weapon = $sword;
// ...
或
换句话说,是否可以将不同的模型视为具有类似类型的雄辩的
附言
显然,上面是一个简化的问题示例,仅用于传达问题的要点。是的,您可以将
武器
a。将列武器类型
和武器id
添加到表中,这可以在迁移文件中使用变形
类型完成:
Schema::table('warriors', function ($table) {
$table->morphs('weapon');
});
现在,您可以将您的关系添加到Warrior
模型:
public function weapon() {
return $this->morphTo();
}
就这样!现在你可以添加武器了,剩下的就交给雄辩手了。该关系甚至支持即时加载。我建议您的所有武器都应该实现一个接口,这样您就可以知道它们有哪些共同的方法,但不幸的是,Eloquent无法通过PHP类型系统为您强制实现该接口。Hi,您有什么收获吗?我自己也有类似的情况
public function weapon() {
return $this->morphTo();
}