0

提前抱歉我的英语水平不好。

我在 symfony2 项目上工作了 3 周(我是 symfony2 的初学者),我对一个更新表单有疑问。

我的表单使用两个实体:一个称为 PIECE,一个称为 MARQUE。

实体 PIECE 包含一个 MARQUE 类型的字段(关系 ManyToOne)。

问题是,当我提交此表单以更新 PIECE 对象时,所有字段都已正确更新,但对象 MARQUE 的内容(与对象 PIECE 相关)也由新值更新,我没有不想。

我只想更新 PIECE 对象中字段 MARQUE 的内容,而不是更新 MARQUE 中字段 NAME 的内容。

使用此代码,我在数据库中两次获得了相同的 MARQUE(请注意,这不是所有代码):

if ($form->isValid()) {

    if ($tmp == 0) { //if MARQUE is not submit/doesn't exist, i create a new one and I link it to PIECE
        $piece->setMarque($nouvelleMarque);
    } else if ($tmp == 1) { // if MARQUE exist in database, I just link it to PIECE 
        $piece->setMarque($marque);
    }
    $em->persist($piece->getMarque());
    $em->persist($piece);
    $em->flush();
}

编辑:这里是实体 PIECE 的定义:

/**
* Piece
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Symfony\StockBundle\Entity\PieceRepository")
*/
class Piece
{
    /**
    * @ORM\ManyToOne(targetEntity="Symfony\StockBundle\Entity\Marque")
    * @ORM\JoinColumn(nullable=true)
    * @Assert\Valid()
    */
    private $marque;
4

0 回答 0