在集合表单中,外键始终为null

时间:2017-08-05 17:44:06

标签: symfony associations many-to-one formcollection

我希望我的问题可以清楚 在我的symfony2项目中,我正在按照this教程创建一个表单,我可以在其中按下链接以添加用户想要的“auteur”,所以我尝试使用表单集合。
一切正常,除了多对一的字段总是得到“空”值而不是“id” 这就是我所做的。

我在其中添加“auteur”链接的投放实体

....
  /**
 * @ORM\OneToMany(targetEntity="tuto\BackofficeBundle\Entity\Auteur", 
  mappedBy="soumission", cascade={"persist"})
*/
protected $auteurs;
.....
/**
 * @param Collection $auteurs
 * @return $this
 */

public function setAuteurs(Collection $auteurs)
{
    $this->auteurs = $auteurs;
    return $this;
}

/**
 * Add auteur
 *
 * @param \tuto\BackofficeBundle\Entity\Auteur $auteur
 * @return Soumission
 */
 public function addAuteur(Auteur $auteur)
 {
    if ( ! $this->auteurs->contains($auteur) ) {
        $auteur->setSoumission($this);   // this should set the "soumission-
                                            id" field 
        $this->auteurs->add($auteur);
    }
    return $this->auteurs;
  }
   public function removeAuteur(Auteur $auteur)
    {
    if ($this->auteurs->contains($auteur)) {
        $this->auteurs->removeElement($auteur);
    }
    return $this->auteurs;
    }
   /**
 * @return mixed
 */
  public function getAuteurs()
  {
    return $this->auteurs;
    }

这是auteur实体:

/**
 * @ORM\ManyToOne(targetEntity="Soumission", inversedBy="auteur")
 * @ORM\JoinColumn(name="soumission_id", referencedColumnName="id")
 */
 protected $Soumission;
 /**
 * @param $soumission
 * @return $this
 */
public function setSoumission(Soumission $soumission)
{
    $this->soumission = $soumission;
    return $this;}
/**
 * @return mixed
 */
public function getSoumission()
{
    return $this->soumission;
}

public function __toString() {
    return $this->Soumission;
}

the result should be like the second line and not null value

1 个答案:

答案 0 :(得分:-2)

尝试这样做:

  /**
   * @ORM\OneToMany(targetEntity="Auteur",mappedBy="soumission", cascade={"persist"})
   */
   protected $auteurs;
/**
 * Add auteurs
 * @return FormationMsk
 */
public function addAuteur(\tuto\BackofficeBundle\Entity\Auteur $auteurs)
{
    $this->auteurs[] = $auteurs;

    return $this;
}

/**
 * Remove auteurs
 */
public function removeAuteur(\tuto\BackofficeBundle\Entity\Auteur $auteurs)
{
    $this->auteurs->removeElement($auteurs);
}

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

 public function __construct()
{

    $this-auteurs = new \Doctrine\Common\Collections\ArrayCollection();

  }

并且为auteur实体:

/**
 * @ORM\ManyToOne(targetEntity="Soumission", inversedBy="auteurs")
 * @ORM\JoinColumn(name="soumission_id", referencedColumnName="id")
 */
protected $soumission;