Как сделать связи между 3-мя моделями (таблицами)?
Есть 3 таблицы и соответственно 3 сущности:
- companies [id, name ...]
- services [id, service]
- prices [id, currency, price]
Мне нужно вывести на странице, условно, company 1 все её услуги (services) и цены (prices) каждой услуги. Я понимаю, что тут связь многие ко многим, но не понимаю, как вывести на страницу компании услуги и цены на неё в следующем виде:
- Услуга 1 - 1200 ₽
- Услуга 2 - 2300 ₽
- Услуга 3 - 900 ₽
при этом чтобы цены и услуги не перепутались? Если сделать связь между company -> services и company -> prices можно, то как сделать связь между service -> price, чтобы каждая цена соответствовала своей услуге? У каждой компании может быть много услуг и цен. Также одна услуга может быть и у одной компании и у другой, но цены на одну и ту же услугу могут различаться. Как правильно связать эти 3 таблицы?
Ответы (1 шт):
Храните цену в промежуточной таблице company_service. Будет 3 колонки: company_id, service_id, price.
Добавьте отношение для модели Company
public function services()
{
return $this->belongsToMany(Service::class)->withPivot('price');
}
Блок в документации Retrieving Intermediate Table Columns