의 내가 이제 하나의 엔티티 사람한 관계에 하나의 반전 된 측면에서 개체 속성을 입력
class Person
{
...
/**
* @var Player
* @ORM\OneToOne(targetEntity="AppBundle\Entity\Player", inversedBy="person")
*/
private $player;
...
}
하나의 엔티티 플레이어
class Player
{
...
/**
* @var Person
* @ORM\OneToOne(targetEntity="AppBundle\Entity\Person", mappedBy="player")
*/
private $person;
...
}
과의 일대일 관계가 가정하자 사람 측은 그 사람의 외래 키를 잡고있다.
모든
은 [\ ORM \ ORMException 교리]당신은 협회 필드를 검색 할 수 없습니다
에
$em->getRepository('AppBundle:Player')->findByPerson();
가 끝나는 예를 들어, 실패 역전되는 측면에서 뭔가를 액세스하려고 'AppBundle \ Entity \ Player # person'이 (가) 연관의 반대면이기 때문에 입니다. 메소드가 사이드 제휴를 소유하고있을 때만 작동합니다.
소유 측과 동일한 것을 수행하면 (사람을 찾는 플레이어) 모든 것이 정상입니다.
알아낼 수 없음 : 엔티티 양쪽에서 엔티티에 어떻게 액세스 할 수 있습니까?
필자가 알고 있어야하기 때문에, 어떤 플레이어가 아직 할당되지 않았으며 그 반대도 마찬가지입니다. 나는 생각, 교리 관련된 엔터티를로드 중입니다 ...이 경우 일반 SQL은 쉽게 솔루션을 보인다? 아니면 내가 정말 dql과 조인을 다루어야합니까? 클래스 플레이어에서
내가 보듯이 문서가 말한대로, 당신은 단지 ... joinColumn 파트를 추가, 키 열이 명명 체계와 다르지 않은 한이를 추가 할 필요가 없습니다. 위의 항목은 "person_id"라는 Player 엔티티에 또 다른 열을 생성하고이를 Person-> Player와의 관계가 이미 다른 엔티티와 존재하므로 외래 키 제약 조건을 가진 엔티티 person "id"에 연결합니다. 측면 (person.player_id = player.id) ... –