protected function createQueryBuilder($joins = null)
{
$this->queryBuilder = $this->em->createQueryBuilder()->from($this->entityName, $this->entityName);
$this->assignJoins($this->queryBuilder, $joins);
// set expressions
if (!empty($this->expressions)) {
foreach ($this->expressions as $expression) {
$this->queryBuilder->andWhere('(' . $expression->getStatement($this->queryBuilder) . ')');
}
}
$this->assignGroupBy($this->queryBuilder);
if ($this->search !== null) {
$searchParts = [];
foreach ($this->searchFields as $searchField) {
$searchParts[] = $searchField->getSearch();
}
$this->queryBuilder->andWhere('(' . implode(' OR ', $searchParts) . ')');
$this->queryBuilder->setParameter('search', '%' . str_replace('*', '%', $this->search) . '%');
}
return $this->queryBuilder;
}