Created
May 21, 2015 14:25
-
-
Save fprochazka/15261cc844480651eae5 to your computer and use it in GitHub Desktop.
QueryObject class template for PhpStorm
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 | |
namespace ${NAMESPACE}; | |
use Nette; | |
use Kdyby; | |
use Kdyby\Doctrine\QueryBuilder; | |
use Kdyby\Persistence\Queryable; | |
class ${NAME} extends Kdyby\Doctrine\QueryObject | |
{ | |
/** | |
* @var array|\Closure[] | |
*/ | |
private \$filter = []; | |
/** | |
* @var array|\Closure[] | |
*/ | |
private \$select = []; | |
protected function doCreateQuery(Kdyby\Persistence\Queryable \$repository) | |
{ | |
\$qb = \$this->doCreateFilterQuery(\$repository); | |
foreach (\$this->select as \$modifier) { | |
\$modifier(\$qb); | |
} | |
return \$qb; | |
} | |
protected function doCreateCountQuery(Queryable \$repository) | |
{ | |
return \$this->doCreateFilterQuery(\$repository)->select('COUNT(e.id)'); | |
} | |
private function doCreateFilterQuery(Queryable \$repository) | |
{ | |
\$qb = \$repository->createQueryBuilder() | |
->select('e')->from(${NAME}::class, 'e'); | |
foreach (\$this->filter as \$modifier) { | |
\$modifier(\$qb); | |
} | |
return \$qb; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment