Продолжаю переписывать старый проект на laravel. В попытках оптимизировать все усложнил по традиции.
Есть 3 модели. City, Category, Service. Грубо говоря прайс-лист.
City-Category тут все понятно. Many to Many через доп. таблицу. А дальше начинается затык.
Category-Service. сделал One to Many. Вроде логично - каждая услуга принадлежит какой-то категории. При этом категория привязана к городу.
А теперь возникает ситуация, что в разных городах стоимость одной и той же услуги может быть разной.
И не могу никак сообразить, что куда привязывать в таком случае.
Пробовал сделать
public function services()
{
return $this->hasManyThrough(
Service::class,
Category::class,
);
}
Но логично, что он не находит поля city_id в модели Category, поскольку связь идет через many to many.
По идее нужна еще таблица связей - City-Service? many to many с дополнительным полем price.
Раньше я кондово это все делал. Таблица с категориями (категория, город). Таблица с услугами (category_id, city).
И вручную в каждый город создать категории. Потом в каждый город в каждую категорию добавлять одни и те же услуги. 5 лет назад это было 2 города. Сейчас в общем это надо все усложнить.
Буду признателен за советы и где можно подсмотреть подобные реализации.