many-to-many 관계가있는 Image
및 Tags
의 두 엔터티가 있습니다. code
, description
, author
과 다 대다 관계를 구현 tags
:관련 엔터티 필드에 대한 where 절이있는 Doctrine 쿼리 buider
Image
일부 필드가 있습니다.
Tag
에는 name
및 images
의 두 필드 만 있습니다.
난 당신이 텍스트를 쓴 후 그것의 code
, description
또는 author
필드에 텍스트를 가지고, 또는 어떤 어떤 Image
을 반환됩니다 단지 입력 필드와 매우 일반 검색 양식을 짓고 있어요 해당 태그 name
필드.
비 관계 필드의 경우 쉽습니다.
$em = $this->getDoctrine()->getManager();
$qb = $em->getRepository('MyBundle:Image')->createQueryBuilder('i');
$qb
->where(
$qb->expr()->like('i.code', $qb->expr()->literal('%'.$request->get('query').'%'))
)
->orWhere(
$qb->expr()->like('i.description', $qb->expr()->literal('%'.$request->get('query').'%'))
)
->orWhere(
$qb->expr()->like('i.author', $qb->expr()->literal('%'.$request->get('query').'%'))
);
지금, 나는 tags
의 각 name
필드에 진행하는 방법을 모른다 : 나는 (query
검색에 사용되는 바로 드 GET 매개 변수입니다) 내 컨트롤러에 있습니다.
모든 태그를 문자열로 반환 한 Image
엔티티의 가상 필드를 사용하려고했으나 나중에 쿼리 작성기에서 사용할 수 없습니다.
고맙습니다.
1. 귀하의 답변에 감사드립니다. 그런 식으로 작동합니다. 하지만 DQL 대신 쿼리 빌더를 사용하도록하겠습니다. 좋은 ORM이 객체 지향 방식으로 작업하도록 장려해야한다고 생각합니다. 아무도 다른 쿼리 빌더를 제안하지 않으면 귀하의 답변을 올바른 것으로 설정합니다. –
문제가 있습니다. 그런 식으로 태그가없는 이미지는 검색 할 때 고려되지 않습니다. –
다음 LEFT JOIN이어야합니다. – nikita2206