Doctrine orm MySql的原则和引用保留字

Doctrine orm MySql的原则和引用保留字,doctrine-orm,doctrine,symfony4,Doctrine Orm,Doctrine,Symfony4,在我的Symfony 4.3项目中,MySql数据库中有一个名为Group和table Group的实体。组是一个保留字。我有3个实体:用户、组、用户组。它们有关系:User->OneToMany->UserGroup和Group->OneToMany->UserGroup(UserGroup有附加属性,所以我不能使用ManyToMany关系)。当我尝试获取id为1的用户的组名时: $entityManager = $this->getDoctrine()->getManager()

在我的Symfony 4.3项目中,MySql数据库中有一个名为Group和table Group的实体。组是一个保留字。我有3个实体:用户、组、用户组。它们有关系:User->OneToMany->UserGroup和Group->OneToMany->UserGroup(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>';
    }
$entityManager=$this->getDoctrine()->getManager();
$user=$entityManager->getRepository(用户::类)
->查找($id);
$groups=$user->getUserGroups();
foreach($组作为$组){
$group_name=$group->getGroupId()->getName();
echo$group_名称“
”; }
我收到错误消息:

您有一个错误:使用params[1]:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有一个错误;检查与您的MySQL服务器版本对应的手册,了解在第1行代码为0的“group t0 WHERE t0.id=1”附近使用的正确语法

文档()中有一个配方,说明如何启用保留字的引用:

<?php
use Doctrine\ORM\Mapping\AnsiQuoteStrategy;

$configuration->setQuoteStrategy(new AnsiQuoteStrategy()); 

我认为更好的解决方案是在实体定义中使用记号,如中所述


是什么让你认为你需要配置任何东西?当你跳过这一部分时,有什么不起作用的吗?然后请分享有问题的代码(触发错误的代码)和一些版本信息我有Symfony 4.3,你可以在我的问题正文中看到我的代码。你是否尝试在表定义中使用反勾号?是的,我尝试过。无济于事。我通过实施我自己的报价策略解决了我的问题
<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\GroupRepository")
 * @ORM\Table(name="`group`")
 */
class Group
{
    // ...
}
# config/packages/doctrine.yml

doctrine:
    # ...
    orm:
        quote_strategy: doctrine.orm.quote_strategy.default