Estou usando o Symfony 4.3.8 e não consigo encontrar nenhuma informação sobre essas preterições:
Usuário descontinuado: a criação de Doctrine \ ORM \ Mapping \ UnderscoreNamingStrategy sem informar o número está obsoleta e será removida no Doctrine ORM 3.0.
Criar Doctrine \ ORM \ Mapping \ UnderscoreNamingStrategy sem informar seu número é reprovado e será removido no Doctrine ORM 3.0.
Eu procurei no stacktrace e encontrei o seguinte:
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;
}
Nesta classe, o construtor é sempre chamado sem parâmetros, portanto, $ numberAware é sempre falso.
Essa classe é chamada em um arquivo que foi gerado automaticamente pela Injeção de Dependência do Symfony, então não posso "editá-la" ...
Eu pensei que talvez estivesse na doutrina.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
Mas não encontrei nenhuma opção para permitir o número ciente :(
fonte
Respostas:
Na maioria dos casos, eu apenas respondia esse tipo de pergunta com um comentário, mas suspeito que outros desenvolvedores possam ter esse problema. Eu bisbilhotei um pouco e não consegui encontrar nenhuma documentação explícita sobre esse assunto. Talvez porque o DoctrineBundle esteja sob o controle do pessoal do Doctrine e não dos desenvolvedores do Symfony. Ou talvez eu seja apenas um mau pesquisador.
De qualquer forma, entre 4,3 e 4,4, o nome do serviço para a estratégia de nomeação de sublinhado foi alterado.
E uma mensagem de depreciação foi adicionada para avisar os desenvolvedores para alterar o nome. Teria sido bom se a mensagem fosse um pouco mais explícita, mas tudo bem. Portanto, se você estiver atualizando um aplicativo existente para 4.4 e além, provavelmente precisará editar manualmente seu arquivo doctrine.yaml para que a mensagem de depreciação desapareça.
Mais algumas informações (obrigado @janh) sobre o motivo da alteração: https://github.com/doctrine/orm/blob/2.8.x/UPGRADE.md#deprecated-number-unaware-doctrineormmappingunderscorenamingstrategy https: // github. com / doutrina / orm / edições / 7855
Ainda não está muito claro por que "eles" escolheram fazer as coisas dessa maneira, mas tudo bem. Provavelmente, você deseja executar "bin / console doctrine: schema: update --dump-sql" apenas para ver se isso afeta os nomes das colunas do banco de dados e ajustar de acordo. As mudanças estão em vigor há várias semanas e não parece haver muitos gritos de indignação com a mudança, então acho que a maioria dos nomes de colunas não tem números incorporados. Até agora, pelo menos.
fonte