لاراول از ارتباط های چند ریختی! هم پشتیبانی میکنه
مثلا میشه 2 جدول رو به یک جدول ارتباط یک به چند زد
مثلا سه جدول به صورت زیر داریم
staff
id - integer
name - string
orders
id - integer
price - integer
photos
id - integer
path - string
imageable_id - integer
imageable_type - string
به صورت زیر روابط رو تعزیف میکنیم
class Photo extends Eloquent {
public function imageable()
{
return $this->morphTo();
}
}
class Staff extends Eloquent {
public function photos()
{
return $this->morphMany('Photo', 'imageable');
}
}
class Order extends Eloquent {
public function photos()
{
return $this->morphMany('Photo', 'imageable');
}
}
و به صورت زیر استفاده کنیم،
برای گرفتم تصاویر که مثل ارتباط یک به چنده
ولی برای گرفتن صاحب یک تصویر، خروجی یکی از مدل های User یا Staff خواهد بود
// fetching photos
$photos = Staff::find(1)->photos;
// $owner is a User or Staff model
$owner = Photo::find(1)->imageable;