正式な結果に準拠しないエンティティオブジェクトの新しいインスタンスを作成する - Symfony 5
P粉004287665
P粉004287665 2023-09-12 18:34:54
0
1
474

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粉004287665
P粉004287665

全員に返信 (1)
P粉771233336

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

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

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

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

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

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

リーリー
いいねを押す+0
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!