Вложенные формы Symfony - отношение многие ко многим - PullRequest
1 голос
/ 13 февраля 2011

Я использую Symfony 1.4 и Propel в качестве ORM. У меня есть форма, в которую нужно вставить какую-то другую форму. Другая форма - это отношение n: m, которое связывает клиента и некоторый объект. Я не могу выяснить, как встроить его, чтобы он отображал все объекты для клиента.

Учитывая следующую схему, я хочу встроить форму CustomerCountryGroup в форму Customer, чтобы отобразить список объектов CuountryGroup, связанных с пользователем.

Вот мой schema.yml:

Customer:
  _attributes: { phpName: Customer }
  id:
    phpName: Id
    type: INTEGER
    size: '11'
    primaryKey: true
    autoIncrement: true
    required: true

CustomerCountryGroup:
  _attributes: { phpName: CustomerCountryGroup }
  id:
    phpName: Id
    type: INTEGER
    size: '10'
    primaryKey: true
    autoIncrement: true
    required: true
  customerId:
    phpName: CustomerId
    type: INTEGER
    size: '10'
    required: false
    foreignTable: Customers
    foreignReference: id
    onDelete: CASCADE
    onUpdate: RESTRICT
  countryGroupId:
    phpName: CountryGroupId
    type: INTEGER
    size: '10'
    required: false
    foreignTable: CountryGroups
    foreignReference: id
    onDelete: CASCADE
    onUpdate: RESTRICT

CountryGroup:
  _attributes: { phpName: CountryGroup }
  id:
    phpName: Id
    type: INTEGER
    size: '11'
    primaryKey: true
    autoIncrement: true
    required: true

Знаете ли вы, где я могу найти учебник / решение этой проблемы?

Большое спасибо

1 Ответ

2 голосов
/ 16 февраля 2011

Symfony должен сгенерировать несколько вариантов выбора для вас, если вы это подразумеваете под врезкой. Это, в отличие от возможности редактировать Страны от Клиента. Я считаю, что вам нужно установить идентификаторы в справочной таблице как PK, тогда Symfony сделает свое дело:

CustomerCountryGroup:
  _attributes: { phpName: CustomerCountryGroup }
  customerId:
    phpName: CustomerId
    type: INTEGER
    required: true
    primaryKey: true
    foreignTable: Customers
    foreignReference: id
    onDelete: CASCADE
    onUpdate: CASCADE
  countryGroupId:
    phpName: CountryGroupId
    type: INTEGER
    required: true
    primaryKey: true
    foreignTable: CountryGroups
    foreignReference: id
    onDelete: CASCADE
    onUpdate: CASCADE
...