Доктрина: Определите отношение «многие ко многим», встроенное в прибор - PullRequest
0 голосов
/ 08 апреля 2011

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

1 голос
/ 08 апреля 2011

Если вы также определяете группы в этом приборе, вы можете ссылаться на них по имени:

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, но, похоже, это работает.

...