Доктрина — отношение базы данных — статус добавления «многие ко многим»

Как лучше всего реализовать следующий сценарий в ORM (Doctrine)?

Сценарий: пользователь может принадлежать к одной или нескольким командам. Команда может состоять из одного или нескольких пользователей.

Итак, с первой частью проблем нет, но я хочу, чтобы у пользователя был "activation_status" для каждой команды, к которой он принадлежит.

Так как я исхожу из SQL и реляционных баз данных, я мог бы добавить поле «activation_status» в мою таблицу отношений «многие ко многим» «team2user».

-> поля базы данных: team_id, user_id, активация_статус

Но как я могу реализовать это с помощью Doctrine? Я сохраняю команду сущностей и пользователя. Но как правильно сохранить активацию_status?

Спасибо заранее.


person user1768560    schedule 23.10.2012    source источник
comment
Я добавлю активацию новой сущности, потому что в моем случае это кажется лучшим решением. Но добавление объекта TeamUser было бы альтернативным способом.   -  person user1768560    schedule 23.10.2012


Ответы (2)


Я думаю, вы могли бы пересмотреть свои сущности и добавить сущность активации, чтобы ваши сущности были такими:

  1. У пользователя есть несколько Активаций (OneToMany)
  2. Активация принадлежит одному пользователю (ManyToOne) и принадлежит команде (ManyToOne).
  3. У команды есть несколько Активаций (OneToMany)

Вы также можете определить отношение ManyToMany между пользователем и командой через сущность активации.

person Roozbeh Zabihollahi    schedule 23.10.2012

Единственный способ добиться этого (по крайней мере, до Doctrine 2.1, я не уверен на 100%, как это выглядит в более высоких версиях) — создать отдельный объект TeamUser и связать его с объектами User и Team, используя отношение ManyToOne. Затем вы можете поместить все, что хотите, в свой новый объект (для вашего примера это будет дополнительное свойство $activationStatus)

person Cyprian    schedule 23.10.2012