Member 14832742 Ответов: 1

Преобразование SQL в dql


Мне нужно использовать код dql, чтобы показать пользователю доступные годы из диаграммы, чтобы он мог выбрать один из них.

Что я уже пробовал:

This sql code works but I need it to be a dql code.
SELECT DISTINCT YEAR(date) AS field FROM plan


Я пробовал это сделать но ничего не вышло:

->add('year, EntityClass::class,[
'class'=>Plan::class,
'query_builder'=>функция(EntityRepository $er){
return $er->createQueryBuilder('p')
->select('YEAR(p.date) AS year') [когда эта строка не закомментирована, она показывает ошибку, говоря, что она получает строку вместо объекта, но поле, которое я возвращаю, является объектом(дата)]
->отчетливый();
}
'choice_label'=&ГТ;'идентификатор',
'multiple'=>false,
"требуется"=>true,
]

Richard Deeming

Вам нужно будет объяснить, что вы подразумеваете под "DQL". Согласно Википедии, то, что у вас есть, это уже DQL:
Язык запросов к данным - Википедия[^]

Member 14832742

Извините, я не сказал, что использую Symfony 4, где DQL = Doctrine Query Language, и он используется для запроса базы данных из самого фреймворка

1 Ответов

Рейтинг:
2

Richard Deeming

Глядя на документация[^], единственная часть вашего запроса, которая не поддерживается, - это YEAR функция.

Согласно с это так пост[^], вы можете установить расширение, чтобы включить его.


Member 14832742

Я сделал все, что они сказали в посте по ссылке, которую вы мне дали, но ошибка продолжает появляться. Спасибо за старания в любом случае

Richard Deeming

А ошибка есть?

Member 14832742

Предупреждение: spl_object_hash() ожидает, что параметр 1 будет объектом, заданной строкой

ErrorException in
\vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php (строка 1347)

*
*@return boolean
*/
публичная функция isScheduledForInsert($entity)
{
возвращение использования isset($это-&ГТ;entityInsertions[spl_object_hash($сущностей)]); &ЛТ;-эта строка
}
/**
* Планирует обновление объекта.
*

Richard Deeming

Это не имеет ничего общего с DQL; это функция PHP:
PHP: spl_object_hash - руководство пользователя[^]