TL;DR
У меня есть собственный пакет PIM Akeneo, и я хочу добавить новый столбец «Склад» в сетку продуктов и на страницу с подробными сведениями о продукте в серверной части Akeneo. Это новое свойство и новый столбец. Поэтому я добавил столбец stock в таблицу pim_catalog_product и свойство stock в класс Entity\Product. Последнее, конечно, не было сделано напрямую: я создал собственный объект Product в своем пакете и расширил его из исходного продукта Akeneo. Но это работает неправильно. Неправильное сопоставление и/или построитель запросов.
Проблемы/ошибки
Я получаю следующие ошибки:
Когда я пытаюсь проверить схему, я получаю сообщение об ошибке. Таблица с именем «akeneo_pim.pim_catalog_product» уже существует.
$ docker compose exec fpm bin/console doctrine:schema:validate
Mapping
-------
[OK] The mapping files are correct.
Database
--------
17:11:51 CRITICAL [console] Error thrown while running command "doctrine:schema:validate". Message: "The table with name 'akeneo_pim.pim_catalog_product' already exists." ["exception" => Doctrine\DBAL\Schema\SchemaException^ { …},"command" => "doctrine:schema:validate","message" => "The table with name 'akeneo_pim.pim_catalog_product' already exists."]
In SchemaException.php line 108:
The table with name 'akeneo_pim.pim_catalog_product' already exists.
Когда я пытаюсь получить продукт, открыв страницу его сведений в серверной части Akeneo PIM, я получаю сообщение об ошибке SQLSTATE[42S22]: Столбец не найден: 1054 Неизвестный столбец «t0.id» в разделе «where».
$ tail -f ./var/logs/dev.log
...
request.CRITICAL:
Uncaught PHP Exception Doctrine\DBAL\Exception\InvalidFieldNameException:
"An exception occurred while executing
'SELECT
t1.id AS id_2,
t1.is_enabled AS is_enabled_3,
t1.identifier AS identifier_4,
t1.raw_values AS raw_values_5,
t1.created AS created_6,
t1.updated AS updated_7,
t1.quantified_associations AS quantified_associations_8,
t1.stock AS stock_9,
t1.family_id AS family_id_10,
t1.product_model_id AS product_model_id_11,
t1.family_variant_id AS family_variant_id_12
FROM pim_catalog_product t1
WHERE t0.id = ?'
with params ["1207"]:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.id' in 'where clause'"
at /srv/pim/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php line 60
{"exception":
"[object] (Doctrine\\DBAL\\Exception\\InvalidFieldNameException(code: 0):
An exception occurred while executing
'SELECT
t1.id AS id_2,
t1.is_enabled AS is_enabled_3,
t1.identifier AS identifier_4,
t1.raw_values AS raw_values_5,
t1.created AS created_6,
t1.updated AS updated_7,
t1.quantified_associations AS quantified_associations_8,
t1.stock AS stock_9,
t1.family_id AS family_id_10,
t1.product_model_id AS product_model_id_11,
t1.family_variant_id AS family_variant_id_12
FROM pim_catalog_product t1
WHERE t0.id = ?'
with params [\"1207\"]:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.id' in 'where clause'
at /srv/pim/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:60,
Doctrine\\DBAL\\Driver\\PDOException(code: 42S22):
SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.id' in 'where clause'
at /srv/pim/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:123,
PDOException(code: 42S22):
SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.id' in 'where clause'
at /srv/pim/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:121)"
} []
TL;DR У меня есть собственный пакет PIM Akeneo, и я хочу добавить новый столбец «Склад» в сетку продуктов и на страницу с подробными сведениями о продукте в серверной части Akeneo. Это новое свойство и новый столбец. Поэтому я добавил столбец stock в таблицу pim_catalog_product и свойство stock в класс Entity\Product. Последнее, конечно, не было сделано напрямую: я создал собственный объект Product в своем пакете и расширил его из исходного продукта Akeneo. Но это работает неправильно. Неправильное сопоставление и/или построитель запросов. Проблемы/ошибки Я получаю следующие ошибки: [list] [*]Когда я пытаюсь проверить схему, я получаю сообщение об ошибке. Таблица с именем «akeneo_pim.pim_catalog_product» уже существует.
[code]$ docker compose exec fpm bin/console doctrine:schema:validate Mapping ------- [OK] The mapping files are correct. Database -------- 17:11:51 CRITICAL [console] Error thrown while running command "doctrine:schema:validate". Message: "The table with name 'akeneo_pim.pim_catalog_product' already exists." ["exception" => Doctrine\DBAL\Schema\SchemaException^ { …},"command" => "doctrine:schema:validate","message" => "The table with name 'akeneo_pim.pim_catalog_product' already exists."] In SchemaException.php line 108: The table with name 'akeneo_pim.pim_catalog_product' already exists. [/code]
[*]Когда я пытаюсь получить продукт, открыв страницу его сведений в серверной части Akeneo PIM, я получаю сообщение об ошибке SQLSTATE[42S22]: Столбец не найден: 1054 Неизвестный столбец «t0.id» в разделе «where». [/list] [code]$ tail -f ./var/logs/dev.log ... request.CRITICAL: Uncaught PHP Exception Doctrine\DBAL\Exception\InvalidFieldNameException: "An exception occurred while executing 'SELECT t1.id AS id_2, t1.is_enabled AS is_enabled_3, t1.identifier AS identifier_4, t1.raw_values AS raw_values_5, t1.created AS created_6, t1.updated AS updated_7, t1.quantified_associations AS quantified_associations_8, t1.stock AS stock_9, t1.family_id AS family_id_10, t1.product_model_id AS product_model_id_11, t1.family_variant_id AS family_variant_id_12 FROM pim_catalog_product t1 WHERE t0.id = ?' with params ["1207"]:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.id' in 'where clause'" at /srv/pim/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php line 60
{"exception": "[object] (Doctrine\\DBAL\\Exception\\InvalidFieldNameException(code: 0): An exception occurred while executing 'SELECT t1.id AS id_2, t1.is_enabled AS is_enabled_3, t1.identifier AS identifier_4, t1.raw_values AS raw_values_5, t1.created AS created_6, t1.updated AS updated_7, t1.quantified_associations AS quantified_associations_8, t1.stock AS stock_9, t1.family_id AS family_id_10, t1.product_model_id AS product_model_id_11, t1.family_variant_id AS family_variant_id_12 FROM pim_catalog_product t1 WHERE t0.id = ?' with params [\"1207\"]:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.id' in 'where clause' at /srv/pim/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:60, Doctrine\\DBAL\\Driver\\PDOException(code: 42S22): SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.id' in 'where clause' at /srv/pim/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:123, PDOException(code: 42S22): SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.id' in 'where clause' at /srv/pim/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:121)" } [] [/code] Код [b][code]src/Tpg/Bundle/AkeneoTpgBundle/Entity/Product.php[/code][/b] [code]