提前抱歉我的英语水平不好。
我在 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;