设置 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"
我希望能够在创建任务(也有自己的实体)的同时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"