Я пытаюсь построить систему управления территорией для некоммерческой организации.
Смысл TMA состоит в том, чтобы назначать территории разным пользователям.
Пользователь может запросить назначение на территорию, а SuperAdmin может либо отклонить, либо подтвердить.
Каждая территория имеет разные типы (например, тип A, тип B и тип C).
Каждый пользователь также имеет разные типы (A, B или C)
Пользователь может просматривать и запрашивать территории только одного типа, а также просматривать и запрашивать территории, которые в данный момент не назначены другому пользователю.
(Например: пользователь с типом A может просматривать и запрашивать территории с типом A).
Схема базы данных:
territories
- id
- type_id
- name
users
- id
- type_id
- name
types
- id
- name
assignments
- id
- territory_id
- user_id
- status (enum: confirmed, declined, requested, canceled)
Я пытался установить отношения, но обнаружил, что это было не просто. (или, может быть, я просто делаю это неправильно)
Должно ли это быть сделано с помощью построителя запросов? Если да, то как правильно получить список доступных территорий (которые не были назначены), который соответствует идентификатору пользователя Auth type_id?