В настоящее время я борюсь со сложной проблемой отношений SQL/Laravel.Настройки пользователя, разбитые по типам
Для каждого пользователя мне нужно установить настройки. Эти предпочтения включают в себя четыре различных типа:
- Locations
- Конкуренты
- платформы
- Графики
Желаемые отношения будут что-то вроде:
$user = User::find(1)
//Retrieves all user locations
$user->preferences->locations
//Retrieves all user competitors
$user->preferences->competitors
//Retrieves all user platforms
$user->preferences->platforms
//Retrieves all graphs
$user->preferences->graphs
Я изменил текущая структура данных е раз, потому что я был не в состоянии понять это, но это выглядит как-то эту таблицу:
- user_preferences
- ID
- user_id
А затем для каждого тип предпочтений (места, конкуренты и т. д.), другая таблица:
- user_preferences_locations
- user_preferences_id
- LOCATION_ID ИЛИ competitor_id и т.д.
Далее усложняя этот беспорядок является то, что четыре типа предпочтения не совпадают с таблицами, на которых они предназначены, чтобы присоединиться к. Например, как места, так и конкуренты должны присоединиться к таблице Business, которую я имею (их идентификаторы в этой сводной таблице являются идентификатором бизнеса), а платформам необходимо присоединиться к таблице сервисов.
Вопрос в том, как я собираюсь определить эти сложные отношения? Будет ли это случай, когда я использую полиморфные отношения? Мне нужна модель для каждой сводной таблицы (user_preferences_location и т. Д.)? Сейчас я полностью перегружен, и я изо всех сил пытаюсь это сделать в течение нескольких часов. Любая помощь будет чрезвычайно полезна.
Спасибо.
Я закончил тем, что начал работать, для этого потребовалась таблица 'user_preferences' (' id', 'user_id'), а затем построены три сводные таблицы. Ответ подробно объясняется ниже. –