У меня возникла проблема в Symfony 6.4, когда я обновляю Doctrine/orm с 2.2 до 3.0. Ошибка говорит:
Doctrine\ORM\Mapping\DefaultQuoteStrategy::getColumnName(): возвращаемое значение должно иметь строковый тип, возвращается значение null.
Я знаю, что это что-то вроде «объектного API FieldMapping», потому что мое fieldMapping представляет собой массив, как в версии 2.2, но нет объекта, который должен быть в версии 3.0.
А вот коммит, в котором кто-то по имени greg0ire изменил мою жизнь: https://github.com/doctrine/orm/commit/2acb298e7445b8bd70aef4bbff78652b28c4aad4
Моя конфигурация доктрины:
doctrine:
dbal:
url: '%env(resolve:DATABASE_URL)%'
server_version: '8.0.36'
profiling_collect_backtrace: '%kernel.debug%'
use_savepoints: true
types:
map_config: 'GameMap\Infrastructure\Persistence\Doctrine\DBAL\Types\MapConfigJsonType'
group_config: 'GameMap\Infrastructure\Persistence\Doctrine\DBAL\Types\GroupConfigJsonType'
poi_media_type: 'GameMap\Infrastructure\Persistence\Doctrine\DBAL\Types\PoiMediaTypeStringType'
datetime_immutable_utc: 'GameMap\Infrastructure\Persistence\Doctrine\DBAL\Types\UtcDateTimeType'
orm:
auto_generate_proxy_classes: true
enable_lazy_ghost_objects: true
report_fields_where_declared: true
validate_xml_mapping: true
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
auto_mapping: true
mappings:
GameMap:
type: attribute
is_bundle: false
dir: '%kernel.project_dir%/src/Domain/Entity'
prefix: 'GameMap\Domain\Entity'
alias: GameMap
controller_resolver:
auto_mapping: true
filters:
deleted:
class: 'GameMap\Infrastructure\Persistence\Doctrine\Filter\DeletedFilter'
enabled: true
Большое спасибо!!






Наконец-то я нашел трюк!! ну трюки.
Как я уже сказал, вся проблема в FieldMapping, потому что это массив... почему, потому что нам нужны "доктрины/аннотации".
Поскольку проект старый, некоторые зависимости присутствуют, но больше не используются. С самого начала мы использовали атрибуты, и конфигурация была «тип: Атрибуты», но этот пакет, похоже, вносит некоторые помехи.
Вот шаги, которым мы следуем:
composer remove doctrine/*composer require symfony/orm-packrm -rf var/cache/dev/*composer dump-autoloadЯ думаю, что галочка была в доктрине/аннотациях и кэше.
Я надеюсь, что буду единственным, у кого такая проблема, но если нет, то, по крайней мере, я могу помочь кому-то другому.