Доктрина: Определите отношение "многие ко многим", встроенное в прибор
Я хочу знать, как правильно определить отношения "многие ко многим", встроенные в "Учение о доктрине". Рассматривать sfDoctrineGuardPlugin
например. Схему можно найти здесь
Я определяю фикстуру как: у меня уже есть 2 группы в таблице sfGuardGroup, поэтому я хочу сослаться на group_id
sfGuardUser:
soc-sfUser-1:
first_name: Mrs
last_name: Balasubramanium
email_address: balasubramanium@gmail.com
username: balasubramanium@gmail.com
password: admin
Groups: [{group_id: 2}]
is_active: 1
Это правильно?
1 ответ
Решение
Если вы также определяете группы в этом приборе, вы можете ссылаться на них по имени:
sfGuardGroup:
GroupAdmin: ...
GroupEditor: ...
sfGuardUser:
...
Groups: [GroupEditor]
Если вы хотите указать фактический идентификатор, вы должны написать его следующим образом:
sfGuardUser:
foo:
first_name: Foo
last_name: Bar
...
sfGuardUserGroup: [{group_id: 2}]
Зачем? Если вы посмотрите на schema.yml
файл sfDoctrineGuardPlugin вы можете увидеть refClass
собственность на sfGuardUser
связи:
relations:
Groups:
...
refClass: sfGuardUserGroup
Это немного сложно и не так хорошо задокументировано в Doctrine, но, похоже, работает.