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”을 실행하여 이것이 데이터베이스 열 이름에 영향을 미치는지 확인하고 적절하게 조정할 수 있습니다. 몇 주 동안 변경 사항이 적용되었으며 변경 사항에 대한 분노가 많지 않은 것으로 보이므로 대부분의 열 이름에는 숫자가 포함되어 있지 않습니다. 적어도 지금까지.