2017-01-12 1 views
1

ClassB에 ManyToOne 관계 (지금까지는 단순)가 매핑 된 ClassA이 있습니다.Doctrine 2 외래 키와 같은 기본 키

class ClassA{ 
    /** 
    * @var string 
    * @ORM\Id 
    * @ORM\Column(name="keyA", type="string", length=255) 
    */ 
    private $keyA; 


    /** 
    * @var ClassB $classB 
    * @ORM\ManyToOne(targetEntity="ClassB", inversedBy="classAs") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="ClassB_keyB", referencedColumnName="keyB") 
    * }) 
    */ 
    private $classB; 
} 

그리고 이것은 ClassB입니다 :

class ClassB{ 
    /** 
    * @var string 
    * @ORM\Id 
    * @ORM\Column(name="keyB", type="string", length=255) 
    */ 
private $keyB; 

    /** 
    * 
    * @var ClassC $classC 
    * @ORM\Id 
    * @ORM\ManyToOne(targetEntity="ClassC", inversedBy="classBs") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="ClassC_keyC", referencedColumnName="keyC") 
    * }) 
    */ 
    private $classC; 

    /** 
    * @var ArrayCollection $classAs 
    * @ORM\OneToMany(targetEntity="ClassA", mappedBy="classB") 
    */ 
    private $classAs; 
} 

당신이 ClassB을 알 수있는 바와 같이 복합 기본 키 (2 엔티티와 열에)가 포함되어 있습니다.
는 그리고 이것은 ClassC입니다 :

class ClassC{ 
    /** 
    * @var string 
    * @ORM\Id 
    * @ORM\Column(name="keyC", type="string", length=255) 
    */ 
    private $keyC; 


    /** 
    * @var ArrayCollection $classBs 
    * @ORM\OneToMany(targetEntity="ClassB", mappedBy="classC") 
    */ 
    private $classBs; 
} 

이 Whene 내가 (findAll() 사용) 내가 여기 실종 무엇이 예외를 Missing value for primary key classC on ERP\................\ClassB

를 얻을 수를 ClassA의 모든 엔티티를 표시하려고?!

답변

1

당신은() { 반환 $ this-> createQueryBuilder ('디') getClassA를 ClassARepository에서 자신 만의 방법을 생성하고 조인 C 럼

+1

공공 기능을 추가 할 필요가 -> leftJoin ('di.classB' 'ec') -> addSelect ('ec') -> getQuery() -> getResult(); } – isom

+0

좋은 직장있으세요? – Ld91