в следующем примере кода я использую пользовательский метод репозитория, где мне нужно вызвать его так $queryBuilder = $this->addFilterByVisible($queryBuilder);
, но я бы хотел назвать его так $queryBuilder->andWhere(...)->addFilterByVisible()
возможно ли это? возможно ли это без работы с AST и добавления пользовательских функций dql, например, описанных здесь https://www.doctrine -project.org / 2010/03/29 / doctrine2-custom-dql-udfs.html
такое решение просто расширить построитель запросов и переопределить метод createQueryBuilder
?
это текущий «полный» пример.
class PersonRepository extends ServiceEntityRepository
{
protected function addFilterByVisible(QueryBuilder $queryBuilder): QueryBuilder
{
$queryBuilder
->andWhere('person_group.visible = :group_is_visible')
->andWhere('person.visible = :person_is_visible')
->setParameter('group_is_visible', true)
->setParameter('person_is_visible', true)
;
return $queryBuilder;
}
protected function queryAllSorted()
{
$queryBuilder = $this->createQueryBuilder('person');
$queryBuilder
->innerjoin('person.group', 'person_group')
->addSelect('person_group')
;
$queryBuilder = $this->addFilterByVisible($queryBuilder);
return $queryBuilder;
}
}
для справки: как создать собственный построитель запросов Пользовательский QueryBuilder в Doctrine