У меня есть 2 модели (Агентство и Клиент) и два типа местоположения: Штат и Город. Я хочу, чтобы можно было указать местоположение (любой из штатов ИЛИ городов) для агентств и клиентов.
┌──────────────┐ ┌──────────────┐ ┌───────────┐ ┌───────────┐
│ agencies │ │ clients │ │ states │ │ cities │
├──────────────┤ ├──────────────┤ ├───────────┤ ├───────────┤
│ id │ │ id │ │ id │ │ id │
│ name │ │ ... │ │ name │ │ name │
│ location... │ │ location... │ │ acronym │ │ state_id │
└──────────────┘ └──────────────┘ └───────────┘ └───────────┘
Я подумал о том, чтобы сделать полиморфизм из агентств и клиентов (обе таблицы будут иметь столбцы location_id
и location_type
), и это работает, но я хочу знать, есть ли какой-либо другой более умный и чистый способ сделать это (помните, что города принадлежат штатам, поэтому Я должен быть в состоянии сделать $model->location->state
, если выбранное место для $model
— город).