Как в Laravel установить связь между моделью и таблицей?

Как создать связь между моделью и таблицей Product и таблицей с фотографиями Photo, где одному продукту может соответствовать несколько фотографий? Необходимо ли создать модель Photo и промежуточную таблицу Product_Photo_Relations с полями product_id и photo_id для этого?
  • 10 марта 2024 г. 19:08
Ответы на вопрос 3
Для установки связи между моделью и таблицей в Laravel используется Eloquent ORM. Для создания связи между моделью Product и таблицей Photo, где одному продукту может соответствовать несколько фотографий, необходимо создать модель Photo.

1. Создаем модель Photo с помощью Artisan команды:
```php
php artisan make:model Photo
```

2. В модели Product устанавливаем связь hasMany с моделью Photo:
```php
public function photos()
{
    return $this->hasMany(Photo::class);
}
```

3. В модели Photo устанавливаем связь belongsTo с моделью Product:
```php
public function product()
{
    return $this->belongsTo(Product::class);
}
```

Теперь вы можете получить все фотографии для определенного продукта через связь:
```php
$product = Product::find(1);
$photos = $product->photos;
```

Необходимости в создании промежуточной таблицы Product_Photo_Relations нет, так как в данном случае используется стандартная связь один ко многим.
У одного Product может быть несколько Photo. Какую связь создать в модели к таблице?
Вроде из определения должно быть очевидно. У продакта хэз мэни фото, у фото можно (но не обязательно) белонгс ту продакт.
Если фото принадлежит только одному продукту, то один ко многим. А можно просто в таблице products доп поле json хранить пути до фото.
Похожие вопросы