2012-03-13 5 views
0

Использование файлов Symfony2 и orm.yml для сопоставления сущностей в базе данных, как я могу создать трехмерное отношение между объектами A, B, C, которые приводят к таблице D, содержащей A_PrimaryKey, B_PrimaryKey, C_PrimaryKey отношения между субъектами являются это:Symfony2 3-арийские отношения

AB manytomany AC manytomany BC manytomany

+0

Пробовал ли вы создавать отношения «один-на-один» или «один ко многим», как и с любым другим отношением? Я полагаю, это отношение не поддерживается естественным образом! – Sgoettschkes

+0

Я пытался, но, как я это делал, это провалилось. Можете ли вы указать мне, как вы это сделаете? Благодарю. – Haritz

ответ

0

Итак, ваша базовая модель будет выглядеть следующим образом:

A 1:n D 
B 1:n D 
C 1:n D 

YML для А будет выглядеть это:

Acme\TestBundle\Entity\A: 
    type: entity 
    # ... 
    oneToMany: 
     products: 
      targetEntity: D 
      mappedBy: d 

Вы можете просто повторить это с B и C. Для D, это будет выглядеть примерно так:

Acme\TestBundle\Entity\D: 
    type: entity 
    # ... 
    manyToOne: 
     a: 
      targetEntity: A 
      inversedBy: as 
      joinColumn: 
       name: a_id 
       referencedColumnName: id 
     b: 
      targetEntity: B 
      inversedBy: bs 
      joinColumn: 
       name: b_id 
       referencedColumnName: id 
     c: 
      targetEntity: C 
      inversedBy: cs 
      joinColumn: 
       name: c_id 
       referencedColumnName: id 

Дайте ему попробовать. Возможно, сначала попробуйте сопоставить A и D. Если это работает, продолжайте с B. Таким образом, вы, скорее всего, поймаете ошибки на пути!

+0

Это был результат при запуске php app/console doctrine: schema: update --force: [PDOException] SQLSTATE [42000]: Ошибка синтаксиса или нарушение доступа: 1075 Неверное определение таблицы; может быть только один автоматический столбец, и он должен быть определен как ключ – Haritz

+0

Теперь он работает отлично. Благодарю. Ошибка произошла из-за старой таблицы. – Haritz

+0

Как бы это было, если отношения между объектами A, B, C были: A-B onetoone A-C onetomany B-C onetomany – Haritz

Смежные вопросы