Symfony + Doctrine 多对多关系与链接表

4

情况:

我有三个表:学生、地址、学生地址链接,如下所示。注意*不是精确的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  

从学生对象中,我想获取相关的“地址街道”信息,目前我需要执行以下操作:

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

这个方法可以用...但我认为有一种方法可以使链接表格透明,就像这样神奇:

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

任何方向都很好!

1个回答

4
如果您想要多对多关系,则需要使用类似这里的代码(针对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: ~  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接