gpt4 book ai didi

php - 生成错误 INSERT 语句的 Doctrine

转载 作者:行者123 更新时间:2023-11-29 18:29:51 25 4
gpt4 key购买 nike

我使用 Doctrine 和 Symfony 生成了一个 MySQL 数据库,并且必须通过提取其两个属性并将它们分配给一个新实体来修改一个表。第一个实体称为“Area”,第二个实体称为“Formato”。以前,当我想创建一个新区域时,我提供了它的 id、名称、宽度和高度。(由于该应用程序是用西类牙语设计的,因此宽度称为“ancho”,高度称为“alto”)现在,在新设计中,我们的想法是提供其 id、名称和 FormatId。当然,Format表中已经插入了一些Format,并且Area将具有FormatId作为Formato的外键。到目前为止,这并不是一件复杂的事情,但是,当我尝试创建一个新区域时,我收到一个错误:

AbstractMySQLDriver->convertException('An exception occurred while executing \'INSERT INTO areas (descripcion, nombre, idarea, ancho, alto, idmedio, idformato) VALUES (?, ?, ?, ?, ?, ?, ?)\' with params ["", "Zilosoft Area7", "21626759324", null, null, "28545628", "1"]:SQLSTATE[42S22]: Column not found: 1054 Unknown column \'ancho\' in \'field list\'', object(PDOException))

因此,正如您所看到的,新的 INSERT 语句将旧属性与新属性混合在一起,生成一种“混合”或“合并”语句。

我一直在源文件中一遍又一遍地搜索,但无法理解这是如何发生的,因为我的 Entities 都是最新的,这意味着 Area 有一个 Format 和不是“ancho”也不是“alto”,并且 Formatato 是一个单独的实体,其中包含“ancho”和“alto”。

你知道我是否应该在 Doctrine 中“重置”或“清理缓存”,以便它生成正确的插入语句吗?

顺便说一下,format 是从 Twig 模板中的组合框中获取的数据,并从 Formatos 表中加载。

最佳答案

您只错过了最后一步

因此,您更新了实体以改进、更新或简单地修改数据结构,但是您的 MySQL 数据库仍然不知道您进行了这些更改。解决这个问题的方法是告诉 Doctrine update the schema 。执行此操作的方法是在您的计算机上运行以下命令:

php bin/console doctrine:schema:update --force

请注意,--force 将尝试直接运行查询。如果您想自己运行查询,可以使用 --dump-sql 选项,它将打印出您的所有查询

关于php - 生成错误 INSERT 语句的 Doctrine ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45786092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com