Я немного поискал ответ, но большинство результатов либо недостаточно ясны, либо мне трудно реализовать их в моем текущем шаблоне... Чего я хочу добиться, так это иметь запрос на выбор всех продуктов из продуктов. таблица, соответствующая идентификатору категории из таблицы категорий. Но теперь я хочу также получить продукты, которые являются подкатегориями указанной родительской категории. Я использую Doctrine 2 с codeigniter, и пока моя функция выглядит так:
function searchForProducts( $offset, $limit ) {
$search = $this->input->get('search');
$category = (int)$this->input->get('category');
$supplier = (int)$this->input->get('supplier');
for( $i = 0; $i < 2; $i++ ) {
$select = ($i == 0) ? 'count(p)' : 'p';
$qb = $this->em->createQueryBuilder();
$qb ->select($select)
->from(self::ENTITY, 'p');
if( $i != 0) {
$qb ->setFirstResult( (int)$offset )
->setMaxResults( (int)$limit );
}
if( $search ) {
$qb ->where( "p.title LIKE :search" )
->orWhere( "p.sku LIKE :search" )
->setParameter('search', "%$search%");
}
if( $category ) {
$qb ->andWhere( "p.category = ?1" )
->setParameter(1, $category);
}
if( $supplier ) {
$qb ->andWhere( "p.supplier = ?2" )
->setParameter(2, $supplier);
}
if( $i == 0 ) {
$this->totalRows = $qb->getQuery()->getSingleScalarResult();
} else {
return $qb->getQuery()->getResult();
}
}
}
Я также не думаю, что было бы практично получать все продукты, а затем делать это на уровне приложения, поскольку я использую разбиение на страницы, и продукты могут стать довольно большими.
id|title|categoryID|supplierID...
и т. д., а таблица категорий имеетid|parentID|title
. Родительский идентификатор корневой категории будет NULL. - person Edhen   schedule 30.11.2013