Я переместил приложение с PHP5 на сервер PHP7. Он работает почти гладко, за исключением ошибки при создании компилятора запросов. У меня есть форма, в которой я беру элементы от пользователя сущности и хочу их упорядочить. Как видите, в моем запросе нет WHERE:
->add('user', 'entity', array(
'class' => 'MyappAppliBundle:User',
'property' => 'name',
'required' => false,
'empty_value' => '',
'empty_data' => null,
'query_builder' => function (EntityRepository $br) {
return $br->createQueryBuilder('qb')
->orderBy('qb.name', 'ASC');
}
Однако когда я пытаюсь открыть форму, появляется следующее сообщение об ошибке:
[Syntax Error] line 0, col 55: Error: Expected Literal, got 'ORDER'
SELECT qb FROM Myapp\AppliBundle\Entity\User qb WHERE ORDER BY qb.name AS
Я не понимаю, почему здесь добавлено ГДЕ!
Если я удалю createQueryBuilder, форма отобразится идеально (за исключением того, что пользователи не отсортированы), в противном случае у меня появится сообщение об ошибке.
Если бы у кого-то была идея, это было бы здорово!
Большое спасибо
Обновлено: я использую symfony2 (если быть точным, версия 2.3.9!)
Обновлено еще раз: Я перешел на symfony2.7 и немного изменил добавление:
->add('user', 'entity', array(
'class' => 'MyappAppliBundle:User',
'choice_translation_domain' => true,
'choice_label' => 'name',
'required' => false,
'placeholder' => '',
'empty_data' => null,
'query_builder' => function (EntityRepository $br) {
return $br->createQueryBuilder('qb')
->orderBy('qb.name', 'ASC');
}
))
Однако у меня все еще есть та же проблема с этим WHERE, который, кажется, исходит из ниоткуда.
Привет, я не знаю, видели ли вы мою правку, но я использую Symfony 2.3.9.
Для информации, я перешел на 2.7, но все еще получаю то же сообщение об ошибке. Я не понимаю, откуда ГДЕ ...!
Вы должны попробовать отладить его. дамп ($ br-> createQueryBuilder ('qb') -> getDQL ()); и дамп ($ br-> createQueryBuilder ('qb') -> orderBy ('qb.name', 'ASC') -> getDQL ());
вау, это странно. Он дает правильный запрос SELECT qb FROM Myapp \ AppliBundle \ Entity \ User qb ORDER BY qb.name ASC. Однако сообщение об ошибке все еще существует. Я действительно не понимаю, что здесь происходит.
Вы уверены, что правильно очистили кеш?
Я использовал rm -rf app / cache / * и rm -rf app / logs / cache, я также пробовал sudo php app / console cache: clear, но все та же проблема
Может быть, у ваших продавцов обновите композитор?
какой тогда продавец? Процесс, которым я следовал для своего проекта, был следующим: у меня был проект на ubuntu14 php5 symfony 2.3, мой ИТ-провайдер создал новую машину ubuntu18 php7 и импортировал проект как есть. У меня начались проблемы. Итак, я попытался обновить Symfony до 2.7, но проблема не исчезла. Может быть, возникла проблема при переустановке процесса?
Позвольте нам продолжить обсуждение в чате.






Я нашел решение. я имел
"doctrine/orm": "2.2.*"
в моем composer.json ... Я изменил его на
"doctrine/orm": ">=2.2.*"
Я запустил composer update, и он обновил doctrine / orm до 2.5.14. Теперь проблема решена!
Спасибо за помощь!
Вы должны предоставить больше информации, например, какую версию Symfony вы используете.