在symfony2中提交表单(ManyToOne)

时间:2013-05-16 14:00:30

标签: forms symfony doctrine-orm

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

我正在研究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;

0 个答案:

没有答案