1. Go to this page and download the library: Download carrooi/doctrine-queries library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
carrooi / doctrine-queries example snippets
class UserQuery extends Carrooi\Doctrine\Queries\QueryObject
{
public function byId($id)
{
$this->addFilter(function(QueryBuilder $qb) use ($id) {
$qb->andWhere('u.id = :id')->setParameter('id', $id);
});
return $this;
}
public function doCreateQuery(Queryable $repository)
{
$qb = $repository->createQueryBuilder()
->select('u')->from('App\User', 'u');
$this
->applyFilters($qb)
->applySelectFilters($qb);
// or just:
// $this->applyAllFilters($qb);
return $qb;
}
}
class UserQuery extends Carrooi\Doctrine\Queries\QueryObject
{
public function selectCount()
{
$this->addSelectFilter(function(QueryBuilder $qb) {
$qb->select('COUNT(u)');
});
return $this;
}
}
class UserQuery extends Carrooi\Doctrine\Queries\QueryObject
{
public function selectNick()
{
$this->trySelect('u', ['nick']);
return $this;
}
public function selectEmail()
{
$this->trySelect('u', ['email']);
return $this;
}
}
class UserQuery extends Carrooi\Doctrine\Queries\QueryObject
{
public function selectNickAndEmail()
{
$this->trySelect('u', ['user' => ['nick', 'email']]);
return $this;
}
}
class UserQuery extends Carrooi\Doctrine\Queries\QueryObject
{
public function selectNick()
{
$this->tryDistinctSelect('u', ['nick']);
return $this;
}
}
class UserQuery extends Carrooi\Doctrine\Queries\QueryObject
{
public function selectNick()
{
$this->trySelect('u', [
'nick' => 'nickAlias', // nickAlias will be name of result key
]);
return $this;
}
public function selectEmail()
{
$this->trySelect('u', ['email']); // you can combine partial and classic column selects
return $this;
}
}
class UserQuery extends Carrooi\Doctrine\Queries\QueryObject
{
public function byBookName($name)
{
$this->tryJoin('u.books', 'b'); // INNER JOIN
$this->addFilter(function(QueryBuilder $qb) use ($name) {
$qb->andWhere('b.name = :name')->setParameter('name', $name);
});
return $this;
}
}
class UserQuery extends Carrooi\Doctrine\Queries\QueryObject
{
use Carrooi\Doctrine\Queries\Tree\TNestedTreeQuery;
public function byTree(array $entities)
{
// ... some joins
$this->addFilter(function(QueryBuilder $qb) use ($entities) {
$condition = $this->createNestedTreeSearchCondition($entities, 'entityAlias');
$qb->andWhere($condition->getCondition());
$query->addParameters($qb, $condition->getParameters());
});
}
}
use Carrooi\Doctrine\Queries\Tree\SearchType;
$query->createNestedTreeSearchCondition($entities, 'entityAlias', SearchType::CONDITION_OR);
use Carrooi\Doctrine\Queries\Tree\SearchType;
$query->createNestedTreeSearchCondition($entities, 'entityAlias', SearchType::CONDITION_AND);
use Carrooi\Doctrine\Queries\Tree\SearchType;
$query->createNestedTreeSearchCondition($entities, 'entityAlias', null, SearchType::SEARCH_EVERYWHERE);
use Carrooi\Doctrine\Queries\Tree\SearchType;
$query->createNestedTreeSearchCondition($entities, 'entityAlias', null, SearchType::SEARCH_FOR_SAME);
use Carrooi\Doctrine\Queries\Tree\SearchType;
$query->createNestedTreeSearchCondition($entities, 'entityAlias', null, SearchType::SEARCH_IN_PARENTS);
use Carrooi\Doctrine\Queries\Tree\SearchType;
$query->createNestedTreeSearchCondition($entities, 'entityAlias', null, SearchType::SEARCH_IN_CHILDREN);
use Carrooi\Doctrine\Queries\Tree\SearchType;
$query->createNestedTreeSearchCondition($entities, 'entityAlias', null, SearchType::SEARCH_IN_PARENTS | SearchType::SEARCH_IN_CHILDREN);