Ответ 1
Вы можете использовать Eloquent Полиморфные отношения. Пример в Laravel Documentation фактически демонстрирует настройку общей таблицы изображений для нескольких моделей, поэтому она должна указывать вас в правильном направлении. В вашем случае что-то ваши модели будут выглядеть примерно так:
class Photo extends Eloquent {
public function imageable()
{
return $this->morphTo();
}
}
class Car extends Eloquent {
public function photos()
{
return $this->morphMany('Photo', 'imageable');
}
}
class Flat extends Eloquent {
public function photos()
{
return $this->morphMany('Photo', 'imageable');
}
}
class Shop extends Eloquent {
public function photos()
{
return $this->morphMany('Photo', 'imageable');
}
}
И вы можете получить доступ к фотографиям, допустим, данный Flat
, например:
Flat::find($id)->photos;
Для этого вам также нужно добавить еще 2 столбца в таблицу photos
:
imageable_id: integer <-- This will be the ID of the model
imageable_type: string <-- This will be the model class name (Car/Flat/Shop)