В Symfony QueryBuilder предоставляет удобный способ создания SQL-запросов без прямой работы с языком SQL. При использовании QueryBuilder возможно указывать условия, используя методы класса.
Чтобы задать условие WHERE сравнения с текущим значением, вам нужно использовать метод expr()
, возвращающий экземпляр класса Expr
, и метод eq()
класса Expr
, выполняющий сравнение двух значений на равенство.
Вот пример кода, который демонстрирует, как использовать QueryBuilder для создания запроса с условием WHERE сравнения с текущим значением:
use DoctrineORMEntityManagerInterface; public function yourFunction(EntityManagerInterface $entityManager) { $queryBuilder = $entityManager->createQueryBuilder(); $queryBuilder ->select('e') ->from('YourEntity', 'e') ->where($queryBuilder->expr()->eq('e.yourField', ':yourValue')) // сравниваем поле yourField с текущим значением :yourValue ->setParameter('yourValue', $yourCurrentValue); $query = $queryBuilder->getQuery(); $result = $query->getResult(); // обработка результата запроса }
В этом примере мы создали экземпляр класса QueryBuilder
с помощью метода createQueryBuilder()
менеджера сущностей. Затем мы указали, что нам нужно выбрать все записи из таблицы 'YourEntity' и присвоили ей псевдоним 'e'.
Далее мы добавили условие WHERE сравнения значения поля 'yourField' с текущим значением, используя метод eq()
класса Expr
и метод expr()
экземпляра QueryBuilder
. Мы также использовали метод setParameter()
для задания значения, с которым будет производиться сравнение.
После этого мы получаем объект Query
с помощью метода getQuery()
и выполняем запрос с помощью метода getResult()
, который возвращает результат запроса.
Чтобы использовать этот код в вашем проекте, вам необходимо заменить YourEntity
на имя вашей сущности и yourField
на имя поля, которое нужно сравнить с текущим значением. Также вы должны установить правильное текущее значение с помощью метода setParameter()
.