В связи с этим ответом на вопрос о том, как проверить (не) существование связанных объектов, используя Doctrine's, is empty
запрос , я пытаюсь использовать это в выражении Doctrine Expression, но Expr
Class не имеет документального способа использования is empty
. isNull
не работает. Итак, я ищу выражение:
// filter for e with no relatedEntities $qb->expr()->isEmpty('e.realatedEntities'); // filter for e with relatedEntities $qb->expr()->isNotEmpty('e.realatedEntities');
Итак, любые идеи по этому поводу?
SIZE
Doctrine также не имеет эквивалента в Expr
. Я что-то упускаю? На данный момент я манипулирую объектом запроса вместо того, чтобы возвращать выражение (в привязке фильтра формы Lexik для Symfony), но это только обходное решение.
Поскольку операнды сравнительных выражений являются самими выражениями DQL, вы можете написать:
$qb->expr()->gt('size(e.relatedEntities)', 0)
Они преобразуются в DQL-строку в методе __toString()
выражения, который в этом случае определяется как:
$this->leftExpr . ' ' . $this->operator . ' ' . $this->rightExpr;
Поэтому это должно привести к:
"size(e.relatiedEntities) > 0"
Дальнейшее чтение:
Поскольку $qb->expr()
делает не что иное, как возвращать объекты Doctrine\ORM\Query\Expr
вы можете взглянуть на классы этого пространства имен, если хотите получить информацию о построении более сложных выражений.