我在Symfony中有多对多的关系2.下图。
http://i.stack.imgur.com/x6AYs.png
从Tema Entity我可以使用此ORM定义获取所有相关的Topico记录
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="Application\RiesgoBundle\Entity\Topico", inversedBy="tema")
* @ORM\JoinTable(name="tema_topico",
* joinColumns={
* @ORM\JoinColumn(name="tema", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="topico", referencedColumnName="id")
* }
* )
*/
private $topico;
并使用此方法
/**
* Get topico
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getTopico()
{
return $this->topico;
}
但是,我不知道如何访问存储在tema_topico表上的“ impacto ”和“ ocurrencia ”值。有没有办法使用实体管理器?
答案 0 :(得分:3)
在ManyToMany关联中,您无法存储额外的字段。实现" ManyToMany"有了额外的字段,你将不得不做一个OneToMany - ManyToOne。它会给你类似的东西。
class Tema {
/*
* @ORM\OneToMany(targetEntity="temaTopico", mappedBy="tema")
*/
private $temaTopico;
}
class Topico {
/*
* @ORM\OneToMany(targetEntity="temaTopico", mappedBy="topico")
*/
private $temaTopico;
}
class TemaTopico {
/*
* @ORM\Id()
* @ORM\ManyToOne(targetEntity="Tema", inversedBy="temaTopico")
*/
private $tema;
/*
* @ORM\Id()
* @ORM\ManyToOne(targetEntity="Topico", inversedBy="temaTopico")
*/
private $topico;
/*
* @ORM\Column(name="impacto", type="string")
*/
private $impacto;
}