В связи с этим ответом на вопрос о том, как проверить (не) существование связанных объектов, используя 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 вы можете взглянуть на классы этого пространства имен, если хотите получить информацию о построении более сложных выражений.