Symfony 2 - 获取多对多关系中的其他字段

时间:2014-07-22 19:31:10

标签: symfony doctrine many-to-many entitymanager

我在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 ”值。有没有办法使用实体管理器?

1 个答案:

答案 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;
}

请参阅thisthis