實體類是GeLdapGrupo和GeMedio。它們之間創建了多對多的關係。Symfony2 2.3.7 -Doctrine 2.4.1:ManyToMany關係不保存到數據庫
試過「,cascade = {」persist「}」而沒有。我修改了與多對多關係相關的添加和刪除元素方法。 Fixtures將數據放在ge_medio和ge_ldap_grupo表中,但不在ge_ldap_grupo表(這是多對多關係表)中。
第一類:
/**
* GeMedio
*
* @ORM\Table(name="ge_medio")
* @ORM\Entity
*/
class GeMedio
{
//...
/**
* @ORM\ManyToMany(targetEntity="GeLdapGrupo", mappedBy="geMedios"
, cascade={"persist"})
*/
private $geLdapGrupos;
//...
/**
* Add GeMedios
*
* @param GeMedio $geMedios
* @return GeLdapGrupo
*/
public function addGeMedio(GeMedio $geMedios, $cascade = true)
{
$this->GeMedios[] = $geMedios;
if ($cascade) {
$geMedios->addGeLdapGrupo($this, false);
}
return $this;
}
/**
* Remove GeMedios
*
* @param GeMedio $geMedios
*/
public function removeGeMedio(GeMedio $geMedios, $cascade = true)
{
$this->GeMedios->removeElement($geMedios);
if ($cascade) {
$geMedios->removeGeLdapGrupo($this, false);
}
}
}
第二類:
/**
* GeLdapGrupo
*
* @ORM\Table(name="ge_ldap_grupo")
* @ORM\Entity
*/
class GeLdapGrupo
{
//...
/**
* @ORM\ManyToMany(targetEntity="GeMedio", inversedBy="geLdapGrupos"
, cascade={"persist"})
* @ORM\JoinTable(name="ge_ldap_medio",
* joinColumns={@ORM\JoinColumn(name="id_grupo_ldap",
referencedColumnName="id_grupo_ldap")},
* inverseJoinColumns={@ORM\JoinColumn(name="id_medio",
referencedColumnName="id_medio")}
* )
*/
private $geMedios;
//...
/**
* Add GeMedios
*
* @param GeMedio $geMedios
* @return GeLdapGrupo
*/
public function addGeMedio(GeMedio $geMedios, $cascade = true)
{
$this->GeMedios[] = $geMedios;
if ($cascade) {
$geMedios->addGeLdapGrupo($this, false);
}
return $this;
}
/**
* Remove GeMedios
*
* @param GeMedio $geMedios
*/
public function removeGeMedio(GeMedio $geMedios, $cascade = true)
{
$this->GeMedios->removeElement($geMedios);
if ($cascade) {
$geMedios->removeGeLdapGrupo($this, false);
}
}
//...
}
的更新的代碼是一樣的東西:
//insert some data in table 1, save element on an array gemedios.
// Doing $manager->persist($entity);
//insert some data in table 2, save element on an array geldapgrupos.
// Doing $manager->persist($entity);
foreach ($relations as $relation)
print_r($relation);
$gemedio = $gemedios[$relation['id_gemedio']];
$geldapgrupo = $geldapgrupos[$relation['id_geldapgrupo']];
//Now we have all the related entities...
$gemedio->addGeLdapGrupo($grupo);
//$geldapgrupo->addGeMedio($medio);
print_r($medio);
print_r($grupo);
//$manager->persist($medio);
//$manager->persist($grupo);
}
$manager->flush();
隨着print_r的我檢查的輸出數據fixtures命令,它看起來很好(gegrupo有一個相關的geldapgrupo和geldapgrupo有相同的gegrupo)。
問題是,如前所述,表ge_ldap_grupo上沒有數據。
請任何人都可以幫我嗎?
非常感謝你。
你仍然需要堅持eitherway – Flip
感謝you.In的平均時間我已經把許多一對多到一個一對多多到一的關係,以「橋」實體。在未來,如果我有足夠的時間,精力和更多的信息,我會嘗試再次嘗試那些現在看起來有缺陷的多對多關係功能。 – LanderTaker