首页 > 解决方案 > 无法使用 find 方法或 api 平台获取我的实体?

问题描述

我面临一个奇怪的问题,所以问题是我在添加字段名称和类型等之后使用 symfony 命令行创建了一个名为 Option的实体:

php bin/console make:迁移

php bin/控制台原则:迁移:迁移

我上面提到的广告,我正在使用 api 平台,所以为了获得我所有的选择,我只需输入:

本地主机/api/选项

但是,我没有得到结果,而是在谈论 SQL 语法中的错误 t= 时出现错误,我当然不对此负责,因为它是自己生成的。

所以我尝试使用传统的 symfony 方法找到这些选项,然后再次出现相同的错误,我尝试使用 findOneBy 和相同的方法获得一个信号,所以错误是这样的:

执行“SELECT t0.id AS id_1, t0.label AS label_2 FROM option t0 WHERE t0.id = ?”时发生异常 带参数 [53]:

SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'option t0 WHERE t0.id = 53' 附近使用正确的语法

我当然不知道如何解决这个问题,但我认为该选项是一个保留词,但我不确定。

当然我不认为代码有任何问题,但是即使没有必要,有些人也会要求它,但是这里有一个简单的代码,它在我的控制器中引起了同样的问题:

$OptionManager = $this->getDoctrine()->getRepository(Option::class);
$options = $OptionManager->find(11);

任何帮助将非常感激

标签: phpsymfony4api-platform.com

解决方案


SQLSTATE[42000]:语法错误或访问冲突:1064 表示这option是 MySQL 中的保留字[原文如此]

在 Doctrine 中,保留字必须在实体规范中使用反引号进行转义。

由于保留字冲突,有时需要引用列名或表名。Doctrine 不会自动引用标识符。[原文如此]

/**
 * @ORM\Entity
 * @ORM\Table(name="`option`")
 */
class Option
{
    //...
}

推荐阅读