Symfony + Doctrine «многие ко многим» связывают таблицы - PullRequest
4 голосов
/ 13 октября 2010

Положение:

У меня есть 3 таблицы: Student, Address, StudentAddressLink. Следующее примечание * не ТОЧНЫЙ файл yaml, но вы поняли

Student:  
 column:  
  id: blah blah  
  name: blah blah  
Address:  
 column:  
  id: ~  
  street: ~  
StudentAddressLink:  
 column:  
  id:~  
  student_id: ~  
  address_id: ~  
 relations:  
  Student:  
    local: student_id  
    foreign: id  
   Address:  
     local: address_id  
     foreign: id  

Из объекта Student я хочу получить связанную "Адресную улицу" В настоящее время я должен сделать это:

foreach($student->StudentAddressLink as $address)
{
    echo $address->getStreet();
}

Это работает ... но я думал, что был способ сделать что-то, что делает таблицу ссылок прозрачной, что-то волшебное, как это:

foreach($student->Addresss as $address)
{
  echo $address->getStreet();
}

Любое направление было бы замечательно!

1 Ответ

4 голосов
/ 13 октября 2010

Если вам нужны отношения «многие ко многим», вам нужно использовать что-то вроде кода здесь (для устаревшей версии Symfony, но все еще корректной).

Это включаетустановив refClass как StudentAddressLink, разрешив прозрачные отношения, которые вы хотите.После этого вы сможете использовать, например, $student->Address[0]->getStreet.Документация там может объяснить лучше, чем я!


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

Student:  
  columns:   
    name: string
  relations:
    Address:
      refClass: StudentAddressLink
      local: student_id
      foreign: address_id
Address:  
  columns:  
    street: ~
StudentAddressLink:  
  columns:  
    student_id: ~  
    address_id: ~  
...