Проблемы с обновлением Doctrine ORM с 2.2 до 3.0 с помощью DefaultQuoteStrategy::getColumnName()

У меня возникла проблема в 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

Большое спасибо!!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
172
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Наконец-то я нашел трюк!! ну трюки.

Как я уже сказал, вся проблема в FieldMapping, потому что это массив... почему, потому что нам нужны "доктрины/аннотации".

Поскольку проект старый, некоторые зависимости присутствуют, но больше не используются. С самого начала мы использовали атрибуты, и конфигурация была «тип: Атрибуты», но этот пакет, похоже, вносит некоторые помехи.

Вот шаги, которым мы следуем:

  1. Удалите все зависимости доктрины с помощью: composer remove doctrine/*
  2. Добавьте доктрину, как предлагает Symfony, с помощью: composer require symfony/orm-pack
  3. Удалить все кэши «навряд ли»: rm -rf var/cache/dev/*
  4. Обновите все занятия: composer dump-autoload

Я думаю, что галочка была в доктрине/аннотациях и кэше.

Я надеюсь, что буду единственным, у кого такая проблема, но если нет, то, по крайней мере, я могу помочь кому-то другому.

Другие вопросы по теме