2012-04-24 1 views
1

Я застрял на том, чтобы это работало с Symfony2 и Doctrine, ситуация: Страница с информацией о пирсинге (общая информация и информация об опеке).Symfony 2 получить данные от многих до многих отношений с доктриной

Лишение ухода может иметь несколько проколов, к которому он относится, и пирсинг может иметь несколько выручки по уходу за

Макет базы данных:

Piercings: 
    id 
    name 
    ... 

Caretaking: 
    id 
    title 
    description 

piercing_to_caretaking 
    id 
    piercing_id 
    caretaking_id 

Теперь, как бы я создать Субъект и соответствующий запрос/Dql?

ответ

3

Если вы определяете объекты с помощью YML:

В Piercing.orm.yml добавить:

manyToMany: 
    caretakings: 
     targetEntity: Caretaking 
     inversedBy: piercings 
     joinTable: 
      name: piercing_caretaking 
      joinColumns: 
       caretaking: 
        referencedColumnName: id 
      inverseJoinColumns: 
       piercing: 
        referencedColumnName: id 

В Caretaking.orm.yml добавить:

manyToMany: 
    piercings: 
     targetEntity: Piercing 
     mappedBy: caretakings 

Генерация/обновление субъекты обычным способом, то есть:

app/console doctrine:schema:update --dump-sql (to check results) 
app/console doctrine:schema:update --force (to apply changes) 

Тогда, когда у вас есть пирсинг или заботящееся лицо вы можете получить доступ соответствующих объектов, как это:

$piercing->addCaretaking($caretaking); 
$caretakings = $piercing->getCaretakings(); 
... 
$piercings = $caretaking->getPiercings(); 

Для получения дополнительной информации, в том числе, как сделать это с помощью аннотаций см подраздела 5.1.4 многих ко многим, Двунаправлено в Section 5 Association Mapping документации Doctrine.

+0

Спасибо за этот ответ, он только что выяснил проблему, с которой я столкнулся с фатальными исключениями и несуществующими функциями. Хотя я использую аннотации вместо YAML, легко адаптировать ваше решение. – nealio82