如何解决SQLSTATE [42000]:语法错误或访问冲突:1064

时间:2017-05-08 22:49:59

标签: php symfony doctrine-orm symfony-2.8

我有两个实体,匹配和团队,问题在于映射(我猜),我不是在寻找有人给我解决这个问题,只是给我一些提示我应该在哪里查看文档。出于某种原因,我陷入了困境,无法找到解决方案..我将提供我的两个实体的代码。 Match.php

/**
 * @var
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Team", inversedBy="matchOne")
 * @ORM\JoinColumn(name="team_one_id", referencedColumnName="id")
 */
protected $teamOne;

/**
 * @var
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Team", inversedBy="matchTwo")
 * @ORM\JoinColumn(name="team_two_id", referencedColumnName="id")
 */
protected $teamTwo;

Team.php

/**
 * @var
 * @ORM\OneToMany(targetEntity="AppBundle\Entity\Match", mappedBy="teamOne")
 */
protected $matchOne;

/**
 * @var
 * @ORM\OneToMany(targetEntity="AppBundle\Entity\Match", mappedBy="teamTwo")
 */
protected $matchTwo;

当我查询匹配时问题出现在我的表单类型中,这是代码的一部分

->add('match', EntityType::class, [
        'class' => 'AppBundle:Match',
        'choice_label' => 'getMatch',
        ] )

和getMatch函数

public function getMatch() {
    return $this->getTeamOne()->getName() . ' - ' . $this->getTeamTwo()->getName();
}

表单类型用于创建新的赌注,显然我想在下拉列表中显示比赛(球队名称,例如:切尔西 - 利物浦),并将该比赛的ID写入下注实体。

1 个答案:

答案 0 :(得分:1)

问题出现在表名中。匹配是MySQL中的保留字。因此,遇到相同或类似问题的每个人请首先检查您的表名是否可能是保留字。我在这一天失去了一整天,每当我遇到这样的问题时,就像这样愚蠢......