ホームページ  >  に質問  >  本文

正式な結果に準拠しないエンティティオブジェクトの新しいインスタンスを作成する - Symfony 5

3 つのエンティティがあります。 「ボルドー」、「スタジエール」、「ボルドースタジエール」。

新しい Bordereau を作成する複数ステップのフォームを作成しました。選択した「Stigiaires」をユーザーに表示して検証する必要があります。 Bordereau と Stagiaire はどちらもテーブル BordereauStagiaire を通じてリンクされています。

新しい Bordereau フォームを使用して、コントローラーで Bordereau と Stagiaire ID を取得することができました。しかし、新しい Bordereau が作成されたときに、新しい BordereauStagiaire を作成する方法を探しています。

これは私が実践し始めた方法です。バックエンドでは、最初にボーダーローが作成され、次に新しいボーダーローと選択されたステージで BS が作成されます。 BS テーブルには、Bordereau id、Stagiaire id、および amount (別の属性) があります。

Bordereau の ID とフォームから取得した Stagiaire の ID を使用して、新しい BordereauStagiaire を作成するにはどうすればよいですか?

これは私のコントローラーです

リーリー

これは、フォームからデータを取得する方法ですphp $form['stagiaire']->getData()[0]->getId() および bordereau、Flush を永続化した後にその ID を取得しますデータベースに。 php $formBordereau->getId()

P粉004287665P粉004287665376日前504

全員に返信(1)返信します

  • P粉771233336

    P粉7712333362023-09-13 09:55:02

    私が書いたのは回答ですが、むしろ大量のテキストを含むコメントのようなものでした。

    まず第一に、英語の名前付き変数のみを使用し、少なくとも create のような操作名に bordereau を使用しないことをお勧めします。

    次に、使用する変数に名前を付けます。 $formBordereau はフォームではなく、エンティティであるため、$bordereau のみを使用してください。

    それでは、このエンティティ BordereauStagiaire が必要ですか?これが ManyToMany 関係であることはわかっています。Symfony と Doctrine はエンティティを通じて直接管理します。この 3 番目のエンティティは必要ありません。

    Doctrine は ORM です。つまり、オブジェクトのみを操作でき、ID は操作できません。リレーションシップを正しく設計すると、Bordereau エンティティにメソッド addStagiaire が存在するはずです。その逆も同様です。

    次に、次のオブジェクトを使用してこのメ​​ソッドを呼び出す必要があります:

    リーリー

    返事
    0
  • キャンセル返事