Доктрина: Определите отношение "многие ко многим", встроенное в прибор

Я хочу знать, как правильно определить отношения "многие ко многим", встроенные в "Учение о доктрине". Рассматривать 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, но, похоже, работает.

Другие вопросы по тегам