设置 ManyToMany 失败

Failed to set up a ManyToMany

我希望能够在创建任务(也有自己的实体)的同时select一所学校(有自己的实体)

由于一所学校可以有多个任务,并且您可以在创建任务时select多个学校,所以我使用了 ManyToMany。

问题是,在创建这个 "ManyToMany"、生成实体并更新我的模式之后,Symfony 创建了一个 table,但它完全是空的,没有我要求的两列。我不太习惯 Symfony 和 ManyToMany 系统,所以我可能在没有注意到的情况下犯了一些错误,但我仍然觉得这很奇怪。

这是我的 ecole(学校)实体中有趣的部分:

class Ecole{

// ...

    /**
     * @ORM\ManyToMany(targetEntity="MissionBundle\Entity\Mission", mappedBy="ecolesDispo")
     */
    protected $missionsDispos;

// ...

/**
 * Add missionsDispo
 *
 * @param \MissionBundle\Entity\Mission $missionsDispo
 *
 * @return Ecole
 */
public function addMissionsDispo(\MissionBundle\Entity\Mission $missionsDispo)
{
    $this->missionsDispos[] = $missionsDispo;

    return $this;
}

/**
 * Remove missionsDispo
 *
 * @param \MissionBundle\Entity\Mission $missionsDispo
 */
public function removeMissionsDispo(\MissionBundle\Entity\Mission $missionsDispo)
{
    $this->missionsDispos->removeElement($missionsDispo);
}

/**
 * Get missionsDispos
 *
 * @return \Doctrine\Common\Collections\Collection
 */
public function getMissionsDispos()
{
    return $this->missionsDispos;
}

这是我的任务实体中有趣的部分:

/**
 * @ORM\ManyToMany(targetEntity="EcoleBundle\Entity\Ecole", inversedBy="missionsDispo")
 * @ORM\JoinTable(name="Mission2Ecole",
 *     joinColumns={@ORM\JoinColumn(name="em_id", referencedColumnName="id")},
 *     inverseJoinColumns={@ORM\JoinColumn(name="me_id", referencedColumnName="id")}
 *     )
 */
protected $ecolesDispo;

// ...

/**
 * Constructor
 */
public function __construct()
{
    $this->ecolesDispo = new \Doctrine\Common\Collections\ArrayCollection();
}

/**
 * Add ecolesDispo
 *
 * @param \EcoleBundle\Entity\Ecole $ecolesDispo
 *
 * @return Mission
 */
public function addEcolesDispo(\EcoleBundle\Entity\Ecole $ecolesDispo)
{
    $this->ecolesDispo[] = $ecolesDispo;

    return $this;
}

/**
 * Remove ecolesDispo
 *
 * @param \EcoleBundle\Entity\Ecole $ecolesDispo
 */
public function removeEcolesDispo(\EcoleBundle\Entity\Ecole $ecolesDispo)
{
    $this->ecolesDispo->removeElement($ecolesDispo);
}

/**
 * Get ecolesDispo
 *
 * @return \Doctrine\Common\Collections\Collection
 */
public function getEcolesDispo()
{
    return $this->ecolesDispo;
}

创建完所有这些之后,我应该得到一个多 selector 数据库中保存的所有学校的列表(我已经将它添加到 missionType 文件中),但我得到了绝对没什么。

我真的不知道我是否颠倒了注释,或者 "joinTable" 部分是否正确,但我完全迷失在这里。

有人知道吗?

提前致谢

只是打错了"s"inversedBy="missionsDispo" >>> inversedBy="missionsDispos"

PS。官方文档在这里 http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/reference/association-mapping.html#many-to-many-bidirectional