В моем продукте может быть много категорий. Однако в одной части объекта мне нужно получить определенную категорию. Поэтому вместо того, чтобы получать все категории, а затем в поиске цикла для определенного, мне нужно получить только эту конкретную категорию. Для этого я использую построитель запросов.Symfony2 с помощью Query builder для загрузки определенного объекта ManyToMany
public function findProduct($id) {
$qb = $this->createQueryBuilder('p')
->addSelect(array('p', 'cat')) // many to many table
->addSelect(array('p', 'category')) // the category entity
->leftJoin('p.category', 'cat')
->leftJoin('cat.category', 'category')
->andWhere("category.id = 15") // error here
->SetParameter('id', $id);
return $qb->getQuery()->getOneOrNullResult();
}
С помощью этого запроса я легко в состоянии сделать $ product->getCategory[0]
([], так как массив) и получить только категорию, что мне нужно (в данном примере категории с ID = 15)
ПРОБЛЕМЫ:
Однако если продукт оленьей кожи имеет категорию с определенным идентификатором .. Она возвращает весь нуль продукта ..
Так что если я сделать:
$product = $em->getRepository('MpShopBundle:Product')->findProduct($id); = null
Но вместо этого он должен быть таким:
$product = $em->getRepository('MpShopBundle:Product')->findProduct($id); = object
$product->getCategory() = null
Как я могу сделать эту работу в построитель запросов? Возможно ли это?