Skip to content

Instantly share code, notes, and snippets.

@fprochazka
Created May 21, 2015 14:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fprochazka/15261cc844480651eae5 to your computer and use it in GitHub Desktop.
Save fprochazka/15261cc844480651eae5 to your computer and use it in GitHub Desktop.
QueryObject class template for PhpStorm
<?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