Laravel Eloquent:Polymorphic One-to -...嗯,这取决于

时间:2014-06-20 10:10:06

标签: laravel laravel-4 polymorphism eloquent

我有3个型号(产品,类别,图像)。产品可以有多个图像,一个类别应该有一个图像。这听起来像是我的多态关系,但我不确定我想要它的设置方式是否真的有效。

我可以在产品上执行一对多操作,并在类别上一对一到同一个多态字段吗?或者我是否需要将两者建立为一对多关系,并在每次需要类别图像时使用->first()

我不是百分之百的多态关系和我的头脑游泳,试图找出我需要设置3个模型,所以任何类型的解释都会非常多赞赏:))

1 个答案:

答案 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