我有3个型号(产品,类别,图像)。产品可以有多个图像,一个类别应该有一个图像。这听起来像是我的多态关系,但我不确定我想要它的设置方式是否真的有效。
我可以在产品上执行一对多操作,并在类别上一对一到同一个多态字段吗?或者我是否需要将两者建立为一对多关系,并在每次需要类别图像时使用->first()
?
我不是百分之百的多态关系和我的头脑游泳,试图找出我需要设置3个模型,所以任何类型的解释都会非常多赞赏:))
答案 0 :(得分:0)
除非我误解你的意图,否则它才有用。
// Image model
public function imageable()
{
return $this->morphTo();
}
---
// Product model
public function images()
{
return $this->morphMany('Image', 'imageable');
}
// you can have this one too (default image for example)
public function image()
{
return $this->morphOne('Image', 'imageable');
}
---
// Category model
public function image()
{
return $this->morphOne('Image', 'imageable');
}
---
// Usage:
$product = Product::first();
$product->image; // first Image model
$product->images; // Collection of Image models
$category = Category::first();
$category->image; // the only Image model