Мне нужно обработать 3 объекта, которые охватывают одну и ту же таблицу «пользователи»:
User
: охватывает класс пользователей и участвует в некоторых службах аутентификации / проверки.
Driver
: расширяет User
и относится к некоторым другим таблицам. Также участвует в различных услугах.
Passenger
: расширяет User
и относится к другим таблицам. Также участвует в различных услугах.
Все записи в таблице users
являются пользователями. Эти записи с is_driver=0
являются пассажирами, а записи с is_driver=1
- водителями.
Я знаю, что могу сделать сопоставленный суперкласс для таблицы пользователей, и дискриминатором будет is_driver. Таким образом, сущность Passenger и сущность Driver расширили бы это. Проблема, которую я вижу, заключается в том, что я не могу создать сущность User, которая расширяет этот сопоставленный суперкласс, потому что у него нет дискриминатора, любая запись является User.
Существует существующая база данных, и я переношу проект, есть столбец is_driver
, в котором указывается, является ли пользователь водителем или пассажиром (крошечные целые 0 или 1). Теперь я хотел бы иметь 3 объекта.
User
: универсальный (любой ряд)
Driver
: эти строки с is_driver = 1
Passenger
: эти строки с is_driver = 0
В идеале все они должны быть каким-то образом прикреплены в ORM к таблице users
, и водитель и пассажир также должны быть связаны с разными объектами по отдельности.