Saya menggunakan Symfony 4.3.8 dan saya tidak dapat menemukan informasi tentang penghentian mereka:
Penghentian Pengguna: Membuat Doctrine \ ORM \ Mapping \ UnderscoreNamingStrategy tanpa membuatnya sadar nomor sudah ditinggalkan dan akan dihapus di Doctrine ORM 3.0.
Membuat Doctrine \ ORM \ Mapping \ UnderscoreNamingStrategy tanpa membuatnya sadar nomor sudah usang dan akan dihapus di Doctrine ORM 3.0.
Saya mencari di stacktrace dan menemukan ini:
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;
}
Di kelas ini, konstruktor selalu dipanggil tanpa params, jadi $ numberAware selalu salah.
Kelas ini disebut dalam file yang telah dibuat secara otomatis oleh Symfony Dependency Injection, jadi saya tidak dapat "mengedit" itu ...
Saya pikir mungkin itu ada di 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
Tapi saya belum menemukan opsi untuk mengizinkan nomor tersebut menyadari :(
sumber
Jawaban:
Dalam kebanyakan kasus saya hanya akan menjawab pertanyaan semacam ini dengan komentar tapi saya curiga pengembang lain mungkin mengalami masalah ini. Saya mencari-cari sedikit dan tidak dapat menemukan dokumentasi eksplisit tentang masalah ini. Mungkin karena DoctrineBundle berada di bawah kendali orang-orang Doctrine dan bukan pengembang Symfony. Atau mungkin saya hanya seorang pencari yang buruk.
Dalam setiap kejadian, antara 4.3 dan 4.4 nama layanan untuk strategi penamaan garis bawah diubah.
Dan pesan penyusutan ditambahkan untuk memperingatkan pengembang untuk mengubah nama. Akan lebih baik jika pesannya hanya sedikit lebih eksplisit tapi oh well. Jadi, jika Anda meningkatkan aplikasi yang ada ke 4.4 dan lebih dari itu, Anda mungkin perlu mengedit file doctrine.yaml Anda secara manual untuk membuat pesan penyusutan hilang.
Beberapa info lebih lanjut (terima kasih @janh) tentang mengapa perubahan itu dibuat: https://github.com/doctrine/orm/blob/2.8.x/UPGRADE.md#deprecated-number-unaware-doctrineormmappingunderscorenamingstrategy https: // github. com / doctrine / orm / issues / 7855
Masih belum benar-benar jelas mengapa "mereka" memilih melakukan hal-hal seperti ini tetapi oh well. Anda mungkin ingin menjalankan "bin / console doctrine: schema: update --dump-sql" hanya untuk melihat apakah ini berdampak pada nama kolom basis data Anda dan sesuaikan. Perubahan telah keluar selama beberapa minggu sekarang dan tampaknya tidak ada banyak lolongan kemarahan atas perubahan jadi saya kira sebagian besar nama kolom tidak memiliki angka yang disematkan. Setidaknya sejauh ini.
sumber