2010-10-13 6 views
4

Situation:Symfony + Doctrine Beaucoup de nombreuses relations avec les tableaux reliant

J'ai 3 tables: Étudiant, Adresse, StudentAddressLink Comme suit Note * pas le fichier EXACT YAML mais vous avez l'idée

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 

De l'objet étudiant Je veux obtenir le concernant « Adresse Street » actuellement je dois faire:

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

cela fonctionne ... mais je pensais qu'il y avait un moyen de faire SOMET hing qui rend la table de liaison transparente, quelque chose de magique comme ceci:

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

Toute direction serait géniale!

Répondre

4

Si vous voulez des relations plusieurs-à-plusieurs, vous devez utiliser quelque chose comme le code here (pour une version obsolète de symfony mais toujours correcte).

Cela implique la définition de refClass comme StudentAddressLink, permettant la relation transparente que vous souhaitez. Vous pourrez alors utiliser $student->Address[0]->getStreet, par exemple. La documentation là-bas peut mieux expliquer que moi!


Modifier Je pense que votre schéma doit ressembler à ceci:

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