У меня есть проект Symfony 4.3 с именем Group и table group в базе данных MySql. Группа - зарезервированное слово. У меня есть 3 объекта: пользователь, группа, группа пользователей. У них есть отношения: Пользователь -> OneToMany-> Пользовательская группа и группа -> OneToMany -> Пользовательская группа (UserGroup имеет дополнительные атрибуты, поэтому я не могу использовать отношение ManyToMany). Когда я пытаюсь получить имена групп для пользователя с id = 1:
$entityManager = $this->getDoctrine()->getManager();
$user = $entityManager->getRepository(User::class)
->find($id);
$groups = $user->getUserGroups();
foreach ($groups as $group) {
$group_name = $group->getGroupId()->getName();
echo $group_name, '<br>';
}
, я получаю сообщение об ошибке:
Возникла ошибка: возникла исключительная ситуация при выполнении SELECT t0.id ASid_1, t0.name AS name_2 ИЗ группы t0 ГДЕ t0.id =? 'с параметрами [1]: SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL есть ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'group t0 WHERE t0.id = 1' в строке 1 с кодом: 0
В документации есть рецепт (http://docs.doctrine -project.org / projects / doctrine-orm / en / latest / reference / basic-mapping.html # quoting-reserved-words ) как включить цитирование зарезервированных слов:
<?php
use Doctrine\ORM\Mapping\AnsiQuoteStrategy;
$configuration->setQuoteStrategy(new AnsiQuoteStrategy());
Я не понимаю, где я должен использовать этот код - в EntityManager, в Controller? И как я могу получить конфигурацию $?