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