Im Symfony와 Doctrine에 새로운 기능이있어서 새로운 문제를 해결할 수 없습니다.Symfony/Doctrine : 여러 테이블 선택
transactional
이라는 데이터베이스 테이블과 customer
이라는 데이터베이스 테이블이 있습니다. transactional
테이블에는 customer
테이블에 대한 외래 키가 있습니다. 이제 두 테이블에서 모든 데이터를 가져 오려고합니다. 그러나 Customer 필드는 모두 null로 설정됩니다.
/**
* @var \AppBundle\Entity\Customer
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Customer")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="fk_customer", referencedColumnName="id")
* })
*/
private $fkCustomer;
교리 검색어 :
transactional
: 여기
transactional
PHP는 객체의 외래 키
$em = $this->getDoctrine()->getManager();
$transactions = $em->getRepository('AppBundle:Transactional')->findAll();
dump($transactions);
결과 :
0 => Transactional {#483 ▼
-id: 1
-date: DateTime @1510873200 {#493 ▶}
-fkCustomer: Customer {#566 ▼
+__isInitialized__: false
-id: 1
-gender: null
-firstname: null
시간 내 주셔서 대단히 감사합니다. =)
지금까지 첫 번째 옵션을 사용해 보았지만 제대로 작동하지 않았습니다. 그러나 나는 두 번째 글을 읽었습니다. – Dario
안녕하세요, 아직 두 번째 해결 방법을 시도하지는 않았지만 무언가를 발견했습니다. Symfony 디버깅 도구에서 다음 쿼리를 발견했습니다 :'SELECT t0.id AS id_1, t0.date AS date_2, t0.fk_customer AS fk_customer_3 FROM transactional t0'. join 문이 없어야합니까? 또는 join 문이 쓰루 트로 드린으로 처리 되었습니까? – Dario
findAll과 같은 기본 리포지토리 기능을 사용하는 경우 doctrine은이 클래스의 테이블 만 쿼리합니다.EAGER를 가져 오면 그 (것)들을 결합해야합니다. 그러나 EAGER가 거의 아무것도하지 않는 경우도 있습니다. 내가 사용해야하는 쿼리를 정의 할 수 있고 수동 조인을 통해 실제로 많은 수의 단일 db 쿼리를 얻을 수 있기 때문에 항상 이러한 경우에 사용자 지정 리포지토리를 사용합니다. – Joe