2010-10-13 66 views
4
许多关系

现状:的Symfony +学说许多与链接表

我有3个表:学生,地址,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(); 
} 

这工作...但我虽然有办法做到SOMET这使得链接表透明,像这样神奇:

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

任何方向将是伟大的!

回答

4

如果你想要多对多的关系,你需要使用代码here(对于过时的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: ~