[php] 연관이있는 엔티티를 삽입 할 때 엔티티를 검색하는 대신 FK를 사용하는 방법이 있습니까?



1 Answers

참조 프록시 사용과 관련하여
내 조사에서는 다음과 같이 부분적으로 만 해결책이 있습니다.

예, 프록시 레코드를 생성했기 때문에 프로 액티브하게 관련 레코드를 검색 할 필요는 없지만, 업데이트 트랜잭션을 플러시 (커밋)하면 관련 레코드를 검색하기 위해 select 문을 먼저 실행 한 다음 업데이트 (모두 한 번 데이터베이스에 충돌).
이것은 비효율적이며 필요하지 않아야합니다 (외래 키 ID가 있습니다. 왜 레코드를 검색합니까?).

따라서 완벽한 솔루션은 아니지만 데이터베이스에 대한 단일 연결 (좋은)과 약간 단순화 된 코드 만 얻을 수 있습니다.

이 순간에 해결책이 있다면 나는 확신하지 못합니다 ... ??
다행히도 교리 문서는 미래에 업데이트 될 것이며 프록시 로직을 사용하면 자동 성능 향상을 얻어야합니다.

Question

연관이있는 엔티티를 삽입해야합니다.

관련 엔터티의 FK가 이미 있으면 FK가 채워진 상태에서 기본 엔터티를 데이터베이스에 삽입 할 수 있습니까?

아니면 항상해야합니까?

  • FK를 통해 관련 엔티티를 검색하고,
  • 어소시에이션을 참조하는 주 엔터티의 속성을 채우고,
  • 그리고 나서 persist 메소드를 호출한다.



당신은 entityManager :: merge를 사용하여 이것을 할 수있다.

$post = new Post();
$post->setPostCategory(['id' => 1]);
$em->persist($em->merge($post));
$em->flush();



Related