继承的多态关系
Polymorphic Relations for inheritance
在我的数据库中,我有一个继承情况。
有一个名为 Products 的 table 包含所有类别的共同属性,例如 Suits、Footwears 和 织物包 ,每个产品应该只是上述类别之一。
我使用 $table->morphs('taggable');
方法来创建适当的列。
并实现了 eloquent 的多态关系,如下所示:
class Product extends Model
{
public function taggable()
{
return $this->morphTo();
}
}
class Footwear extends Model
{
public function product()
{
return $this->morphMany('Product', 'taggable');
}
}
其他两个 类 同样的事情。
但是当我使用 tinker 来验证关系时,它似乎从一方面起作用!
>>> App\Model\Product::find(65)->taggable
[!] Aliasing 'FabricPack' to 'App\Model\FabricPack' for this Tinker session.
=> App\Model\FabricPack {#2928
id: 5,
length: 0.7,
created_at: "2018-07-30 12:19:51",
updated_at: "2018-07-30 12:19:51",
}
我认为 App\Model\FabricPack::find(5)->tag
应该 return 合适的产品,但 return 是空的。
>>> App\Model\FabricPack::find(5)
=> App\Model\FabricPack {#2929
id: 5,
length: 0.7,
created_at: "2018-07-30 12:19:51",
updated_at: "2018-07-30 12:19:51",
}
>>> App\Model\FabricPack::find(5)->tag
=> null
那么,这个问题有什么解决办法吗?
taggable_type 值应该像这样 App\Model\{subclass}
.
在我的数据库中,我有一个继承情况。
有一个名为 Products 的 table 包含所有类别的共同属性,例如 Suits、Footwears 和 织物包 ,每个产品应该只是上述类别之一。
我使用 $table->morphs('taggable');
方法来创建适当的列。
并实现了 eloquent 的多态关系,如下所示:
class Product extends Model
{
public function taggable()
{
return $this->morphTo();
}
}
class Footwear extends Model
{
public function product()
{
return $this->morphMany('Product', 'taggable');
}
}
其他两个 类 同样的事情。
但是当我使用 tinker 来验证关系时,它似乎从一方面起作用!
>>> App\Model\Product::find(65)->taggable
[!] Aliasing 'FabricPack' to 'App\Model\FabricPack' for this Tinker session.
=> App\Model\FabricPack {#2928
id: 5,
length: 0.7,
created_at: "2018-07-30 12:19:51",
updated_at: "2018-07-30 12:19:51",
}
我认为 App\Model\FabricPack::find(5)->tag
应该 return 合适的产品,但 return 是空的。
>>> App\Model\FabricPack::find(5)
=> App\Model\FabricPack {#2929
id: 5,
length: 0.7,
created_at: "2018-07-30 12:19:51",
updated_at: "2018-07-30 12:19:51",
}
>>> App\Model\FabricPack::find(5)->tag
=> null
那么,这个问题有什么解决办法吗?
taggable_type 值应该像这样 App\Model\{subclass}
.