使用foreach循环持久化数组

时间:2013-05-15 15:51:30

标签: php doctrine-orm

我正在尝试使用doctrine将多个项目持久保存到数据库中,但只保留最后一项。因此,我没有拥有所有数组项的行,而只是在数据库中保留最后一行。我尝试了几种方法,但它们仍然只保留一个项目,第一个或最后一个。我究竟做错了什么。这是我的新代码。我编辑了一些东西并尝试了其他一些东西,但问题仍然存在。

foreach ($options as $option)
{
     $pollOption = new PollOption();
     $pollOption->setName($option);
     $pollOption->setPoll($pollData);
     $em->persist($pollOption);
     $em->flush();          
 }

当我使用上面的foreach循环时,它只提交循环中的最后一个pollOption和数据库中的一个pollData项。

当我使用下面的foreach循环时,它会在循环中提交所有pollOptions,但也会在每个循环中提交一行新的pollData。因此,我最终拥有相同pollData的多行,每行与foreach中的单个选项相关联。

foreach($ options as $ option)

{

$ pollOption = new PollOption();

$ pollOption->的setName($选项);

$ pollOption-> setPoll($ pollData);

$ EM->坚持($ POLLOPTION);

$ EM->冲洗();

$ EM->清除();

}

以下是PollOption和PollData的其余代码 pollData类代码显示映射: 班级投票

{

/ **

  • @ORM \ OneToMany(targetEntity =“PollOption”,mappedBy =“poll”)

* /

protected $ poll_options;

/**

 * Add poll_options

 *
 * @param \Spidd\InformationBundle\Entity\PollOption $pollOptions
 * @return Poll
 */
public function addPollOption(\Spidd\InformationBundle\Entity\PollOption $pollOptions)
{
    $this->poll_options[] = $pollOptions;

    return $this;
}

/**
 * Remove poll_options
 *
 * @param \Spidd\InformationBundle\Entity\PollOption $pollOptions
 */
public function removePollOption(\Spidd\InformationBundle\Entity\PollOption $pollOptions)
{
    $this->poll_options->removeElement($pollOptions);
}

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

}

PollOption类:

类PollOption

{

/**

 * @ORM\ManyToOne(targetEntity="Poll", inversedBy="poll_options", cascade={"all"})

 * @ORM\JoinColumn(name="poll_id", referencedColumnName="id")

 */

protected $poll;
/**
 * Set poll
 *
 * @param \Spidd\InformationBundle\Entity\Poll $poll
 * @return PollOption
 */
public function setPoll(\Spidd\InformationBundle\Entity\Poll $poll = null)
{
    $this->poll = $poll;

    return $this;
}

/**
 * Get poll
 *
 * @return \Spidd\InformationBundle\Entity\Poll 
 */
public function getPoll()
{
    return $this->poll;
}

}

以上是我的新代码。我想要持久化几个pollOptions映射到一个pollData对象。我做错了什么?

0 个答案:

没有答案