0

私の英語のレベルが悪いことを事前に申し訳ありません。

私は 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;
4

0 に答える 0