Created
November 16, 2014 12:44
-
-
Save Tharos/8680094dddc708f65c27 to your computer and use it in GitHub Desktop.
Query Objects with Lean Mapper (snippet)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Vykreslení přehledu produktů v e-shopu | |
* | |
* @var Filter $filter Filtr, který omezuje množinu produktů podle nastavení uživatele | |
* @var int|null $limit Počet produktů zobrazených na stránce | |
* @var VisualPaginatorHelper $visualPaginatorHelper Jednoduchý helper, který pomáhá inicialzovat Paginator (Nette) | |
* @var VisualPaginator $visualPaginator VisualPaginator (Nette) | |
* @var Template $template Šablona view | |
* @var string $ord Způsob řazení produktů | |
* | |
* Query objekty | |
* | |
* ProductsForSaleQuery Vybírá pouze aktivní produkty | |
* ProductsByFilterQuery Vybírá pouze produkty, které vyhovují danému filtru | |
* ProductsOrdererQuery Řadí produkty požadovaným způsobem | |
* SubsetQuery Přidává do dotazu LIMIT a OFFSET, vybírá tak pouze podmnožinu (subset) výsledku | |
*/ | |
$offset = null; | |
$productsForSale = new ProductsForSaleQuery; | |
$productByFilterQuery = new ProductsByFilterQuery($filter); | |
if ($limit !== null) { | |
$itemsCount = $productRepository->getCountBy($productsForSale, $productByFilterQuery); | |
$offset = $visualPaginatorHelper->apply($visualPaginator, $limit, $itemsCount); | |
} | |
$template->products = $productRepository->findBy( | |
$productsForSale, | |
$productByFilterQuery, | |
new ProductsOrdererQuery($ord), | |
new SubsetQuery($limit, $offset) | |
); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment