私の英語のレベルが悪いことを事前に申し訳ありません。
私は symfony2 プロジェクトに 3 週間取り組んでおり (私は symfony2 の初心者です)、1 つの更新フォームについて問題があります。
私のフォームは 2 つのエンティティを使用します。1 つは PIECE と呼ばれ、もう 1 つは MARQUE と呼ばれます。
エンティティ PIECE には、タイプ MARQUE (リレーション ManyToOne) のフィールドが含まれています。
問題は、PIECE のオブジェクトを更新するためにこのフォームを送信すると、すべてのフィールドが正しく更新されますが、(オブジェクト PIECE に関連して) MARQUE オブジェクトの内容も新しい値によって更新されることです。したくない。
PIECE オブジェクトのフィールド MARQUE の内容を更新したいだけで、MARQUE のフィールド NAME の内容は更新したくありません。
このコードでは、データベースで同じ MARQUE を 2 回取得しました (すべてのコードではないことに注意してください)。
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;