Забавих се да потърся отговор, но повечето резултати или не са достатъчно ясни, или ми е трудно да ги внедря в текущия си модел... Това, което искам да постигна, е да имам заявка за избор на всички продукти от продуктите таблица, съответстваща на идентификатор на категория от таблицата с категории, но сега искам да получа и продукти, които са подкатегории на споменатата родителска категория. Използвам 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
. Основна категория parentID ще бъде NULL. - person Edhen   schedule 30.11.2013