[symfony] 더 이상 사용되지 않음 : 번호를 인식하지 않고 Doctrine \ ORM \ Mapping \ UnderscoreNamingStrategy가 더 이상 사용되지 않습니다.

Symfony 4.3.8을 사용하고 있으며 지원 중단에 대한 정보를 찾을 수 없습니다.

더 이상 사용되지 않음 : 번호를 인식하지 않고 Doctrine \ ORM \ Mapping \ UnderscoreNamingStrategy를 만드는 것은 더 이상 사용되지 않으며 Doctrine ORM 3.0에서 제거됩니다.

번호를 인식하지 않고 Doctrine \ ORM \ Mapping \ UnderscoreNamingStrategy를 만드는 것은 더 이상 사용되지 않으며 Doctrine ORM 3.0에서 제거됩니다.

나는 stacktrace에서 검색하고 이것을 발견했다 :

class UnderscoreNamingStrategy implements NamingStrategy
{
private const DEFAULT_PATTERN      = '/(?<=[a-z])([A-Z])/';
private const NUMBER_AWARE_PATTERN = '/(?<=[a-z0-9])([A-Z])/';

/**
 * Underscore naming strategy construct.
 *
 * @param int $case CASE_LOWER | CASE_UPPER
 */
public function __construct($case = CASE_LOWER, bool $numberAware = false)
{
    if (! $numberAware) {
        @trigger_error(
            'Creating ' . self::class . ' without making it number aware is deprecated and will be removed in Doctrine ORM 3.0.',
            E_USER_DEPRECATED
        );
    }

    $this->case    = $case;
    $this->pattern = $numberAware ? self::NUMBER_AWARE_PATTERN : self::DEFAULT_PATTERN;
}

이 클래스에서 생성자는 항상 매개 변수없이 호출되므로 $ numberAware는 항상 false입니다.

이 클래스는 Symfony Dependency Injection에 의해 자동 생성 된 파일에서 호출되므로 “편집”할 수 없습니다 …

아마 그것이 doctrine.yaml에 있다고 생각했습니다.

doctrine:
orm:
    auto_generate_proxy_classes: true
    naming_strategy: doctrine.orm.naming_strategy.underscore
    auto_mapping: true
    mappings:
        App:
            is_bundle: false
            type: annotation
            dir: '%kernel.project_dir%/src/Entity'
            prefix: 'App\Entity'
            alias: App

그러나 숫자를 인식 할 수있는 옵션을 찾지 못했습니다 🙁



답변

대부분의 경우 주석으로 이런 종류의 질문에 대답하지만 다른 개발자 가이 문제를 겪을 수 있다고 생각합니다. 나는 조금 둘러 보고이 문제에 대한 명확한 문서를 찾을 수 없었습니다. 아마도 DoctrineBundle이 Symfony 개발자가 아닌 Doctrine 사람들의 통제하에 있기 때문일 것입니다. 아니면 그냥 나쁜 검색 자일 수도 있습니다.

어쨌든 4.3과 4.4 사이에서 밑줄 명명 전략의 서비스 이름이 변경되었습니다.

# doctrine.yaml
orm:
  # 4.3
  naming_strategy: doctrine.orm.naming_strategy.underscore
  # 4.4
  naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware

그리고 감가 상각 메시지가 추가되어 개발자에게 이름을 변경하도록 경고했습니다. 메시지가 조금 더 명백하지만 오 잘된다면 좋았을 것입니다. 따라서 기존 앱을 4.4 이상으로 업그레이드하는 경우 감가 상각 메시지가 사라지도록 doctrine.yaml 파일을 수동으로 편집해야합니다.

변경 이유에 대한 추가 정보 (@janh 덕분에) :
https://github.com/doctrine/orm/blob/2.8.x/UPGRADE.md#deprecated-number-unaware-doctrineormmappingunderscorenamingstrategy
https : // github. com / doctrine / orm / issues / 7855

왜 “그들”이 이런 식으로 일을했는지 ​​아는 것은 아직 확실하지 않지만 아. “bin / console doctrine : schema : update –dump-sql”을 실행하여 이것이 데이터베이스 열 이름에 영향을 미치는지 확인하고 적절하게 조정할 수 있습니다. 몇 주 동안 변경 사항이 적용되었으며 변경 사항에 대한 분노가 많지 않은 것으로 보이므로 대부분의 열 이름에는 숫자가 포함되어 있지 않습니다. 적어도 지금까지.


답변