1 대 1의 관계가 있습니다. 나는지도 (각 블록은 별도의지도)와 객실 (각지도에는 여러 개의 방이 있음)이 있습니다. 그래서 실체에 대해 내가 가지고있는 (내가 정보를 잘라 필요하지 않습니다) :Symfony/Doctrine에 일대일 레코드가 존재하지 않는지 확인하십시오.
/**
* Block
*
* @ORM\Table(name="BLOCK")
* @ORM\Entity
*/
class Block
{
/**
* @var integer
*
* @ORM\Column(name="PK", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="SEQ_GET_BLOCK_PK", allocationSize=1, initialValue=1)
* @ORM\OneToMany(targetEntity="Rooms", mappedBy="blockId")
*/
private $pk;
}
/**
* Rooms
*
* @ORM\Table(name="ROOMS", indexes={@ORM\Index(name="IDX_EB2CE87E9B70DE02", columns={"MAP_ID"})})
* @ORM\Entity
*/
class Rooms
{
/**
* @var integer
*
* @ORM\Column(name="PK", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="SEQ_GET_ROOMS_PK", allocationSize=1, initialValue=1)
*/
private $pk;
/**
* @var \Block
*
* @ORM\ManyToOne(targetEntity="Block")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="BLOCK_ID", referencedColumnName="PK")
* })
*/
private $block;
지금 방에 속하는 어떤 블록을 얻기 위해, 그 컨트롤러에, 간단합니다
$roomRepo = $this->getDoctrine()->getRepository('AppBundle:Rooms');
$rooms = $roomRepo->findAll();
와 나뭇 가지에 (필드 이름은 상기 블록 테이블의 다른 필드 임) :
그러나{% for room in rooms %}
{{ room.block.fieldname }}
{% endfor %}
는 블록의리스트를 표시하고이 어려워진다 하에서 실을 나타낸다. 내가 좋아하는 나뭇 가지에 블록의 목록을 얻을 뭔가를 할 수 있도록하고 싶습니다 :이 상황에서
{% for block in blocks %}
{% for room in block.rooms %}
{{ room.name }}
{% endfor %}
{% endfor %}
, 나는 그들 아래에 방이없는 블록의 목록을 얻기 위해 노력하고 있어요. 위의 해결 방법이 효과적이라면 각 블록에서 방의 개수를 계산하고 아무 것도없는 경우에만 표시 할 수 있습니다. 또 다른 옵션은 createQueryBuilder에서 쿼리를 수행하고 올바른 결과를 가진 엔티티 블록을 반환하는 것입니다.
아이디어가 있으십니까? 나는이 길을 내려다 보지 만 조금 후에 벽에 부딪쳤다. http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-many-bidirectionalBlock
기본 키의 $pk
속성이
인가 : 당신이 일대 양방향 관계를 필요로 같은
나는 정답이므로이 해결책을 추가하지 않으려 고한다. (이 경우 여분의 필드를 추가하고 싶지는 않으며 업데이트 된 방법으로 유지하기가 쉽지 않다. 앞으로는 1 대 1로 갈 길이 멀다.이 경우 나는 이것을 처리하기 위해 좀 더 복잡한 SQL을 수동 조인과 함께 구현했다. – MicWit