형식적 결과를 따르지 않는 엔터티 객체의 새 인스턴스 생성 - Symfony 5
P粉004287665
P粉004287665 2023-09-12 18:34:54
0
1
540

세 개의 엔터티가 있습니다. "Bordereau", "Stagiaire", "BordereauStagiaire".

새 Bordereau를 생성하고 사용자에게 선택한 "Stigiaires"를 보여주고 유효성을 검사해야 하는 다단계 양식을 만들었습니다. Bordereau와 Stagiaire는 모두 BordereauStagiaire 테이블을 통해 연결됩니다.

새로운 Bordereau 양식을 통해 컨트롤러에서 Bordereau 및 Stagiaire ID를 얻을 수 있었습니다. 그런데 새로운 Bordereau가 생성되면 새로운 BordereauStagiaire를 생성할 수 있는 방법을 찾고 있습니다.

이것이 제가 구현을 시작한 방법입니다. 백엔드에서는 Bordereau가 먼저 생성된 다음 새로운 Bordereau와 선택된 스테이에어를 사용하여 BS가 생성됩니다. BS 테이블에는 Bordereau id, Stagiaire id 및 amount(또 다른 속성)가 있습니다.

양식에서 받은 Bordereau ID와 Stagiaires ID를 사용하여 새로운 BordereauStagiaire를 만드는 방법은 무엇인가요?

이것이 내 컨트롤러입니다

으아악

이것이 제가 양식에서 얻은 내용입니다 php $form['stagiaire']->getData()[0]->getId() 和 bordereau 获取数据的方式,我在持久化后获取其 id刷新到数据库中。 php $formBordereau->getId()

P粉004287665
P粉004287665

모든 응답(1)
P粉771233336

제가 쓴 글은 답변이지만, 글이 많은 댓글에 가깝습니다.

먼저 영어로 명명된 변수만 사용하는 것이 좋습니다. 최소한 bordereau 来命名诸如 create와 같은 연산 이름은 사용하지 마세요.

그런 다음 사용할 변수에 이름을 지정합니다: $formBordereau 不是表单,它是一个实体,您应该只使用 $bordereau.

글쎄요, 이 엔터티가 필요합니다 BordereauStagiaire 吗?我知道这是一个 ManyToMany 관계, Symfony와 Doctrine은 엔터티를 통해 직접 관리하므로 이 세 번째 엔터티는 필요하지 않습니다.

Doctrine은 ORM입니다. 즉, 관계를 올바르게 설계하면 ID가 아닌 개체로만 작업할 수 있으며, 그 반대의 경우도 마찬가지입니다. Bordereau 实体中应该有一个方法 addStagiaire

그런 다음 다음 개체를 사용하여 이 메서드를 호출해야 합니다.

으아아아

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!