태그와 게시물 사이에있는 구현을 공유합니다 (게시물에는 여러 개의 태그가있을 수 있으며 각 태그는 둘 이상의 게시물과 연관 될 수 있음). 나는 당신이 시작하기에 충분하다고 생각합니다. 그것은 설치에 매우 간단합니다
포스트 엔티티에서, 나는이있다 : 조인 테이블에 대한 필요가
/**
* @ManyToMany(targetEntity="Post", mappedBy="tags")
*/
protected $posts;
없는 엔티티 : 태그 엔티티에서
/**
* @ManyToMany(targetEntity="Tag", inversedBy="posts")
* @JoinTable(name="activity_relationship",
* joinColumns={@JoinColumn(name="object", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="subject", referencedColumnName="id")}
*)
*/
protected $tags;
을,이 있습니다 .
태그가있는 게시물의 경우 항상 작은 금액이 있기 때문에 태그 속성에 액세스하는 것으로 충분하지만 각 태그에는 많은 톤과 게시물이있을 수 있으므로 일부 LIMIT 및 OFFSET이이를 제어합니다. 이런 이유로 Cerad는 위에서 언급 한 것처럼 직접 $ posts 변수를 사용할 필요가 없으며 대신 dql을 사용하여 별도로 쿼리합니다.
SELECT t
FROM Post p
JOIN p.tags t
<add whatever other stuff you want>
는 해당 쿼리를 실행하는 것을 선호하는 방법과 상관없이, 당신은 아마
$query->setMaxResults($limit);
$query->setFirstResult($offset);
걱정할 필요를 수행 LIMIT를 적용, 교리에서 질의 객체를 오프셋합니다. Doctrine은 기본적으로 게으르며로드되므로 액세스하려고하지 않는 한 추가 객체를 가져 오지 않습니다. 또한 쿼리 빌더를 사용하여 객체를로드하고 원하는 것을 정확하게 지정할 수 있습니다. – Cerad
나는 쿼리 빌더가 갈 길이라고 생각한다. API 및 AJAX 호출을 많이 사용하므로 게으른로드에 대한 옵션이 많지 않습니다. 모든 것이 JSON API 호출에서 클라이언트의 용도로 전송됩니다. 그래서 모든 추가 데이터를 얻습니다. 객체를 findBy()에서 반환하고 곧바로 JSON으로 변환합니다. – SkippyFlipjack
Extra Lazy Associations : http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/tutorials/extra-lazy-associations.html 사용자가 즐겨 찾기를 많이 사용하는 경우 유용 할 수도 있습니다. – WizardZ