[解決済み] 非推奨。数を意識させないDoctrineORMMappingUnderscoreNamingStrategyは非推奨です。
Question
Symfony 4.3.8を使っていますが、これらの非推奨事項に関する情報を見つけることができません。
User Deprecated: Doctrine ORM 3.0 では、番号を意識せずに DoctrineMappingUnderscoreNamingStrategy を作成することは非推奨となり削除されます。
Creating DoctrineORMMapping InderscoreNamingStrategy without making it number aware は非推奨で、Doctrine ORM 3.0 で削除される予定です。
スタックトレースで検索したら、こんなのが出てきました。
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" を実行して、これがデータベースの列名に影響するかどうかを確認し、それに応じて調整したいと思うかもしれません。 この変更は数週間前に行われましたが、この変更に対する怒りの声はあまり聞かれません。 少なくとも今のところは。
関連
-
[解決済み] Composerで単一のライブラリを更新する方法は?
-
[解決済み】Doctrine QueryBuilder で行数を数える。
-
[解決済み】Twigテンプレートで現在のURLを取得する?
-
[解決済み] symfony2のコントローラでparameters.ymlから読み込むにはどうしたらいいですか?
-
[解決済み] findAll Doctrine のメソッドを並べ替えるには?
-
[解決済み] Twigのパスに複数のパラメータを追加する
-
[解決済み] Symfony 2: テンプレート内でユーザーがログインしていないことを確認するにはどうすればよいですか?
-
[解決済み] Symfony2でTwigテンプレート内の環境名を取得する
-
[解決済み] EntityManagerは終了しました。
-
[解決済み] Symfony 3 の新しいディレクトリ構造は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Composerで単一のライブラリを更新する方法は?
-
[解決済み】Doctrine QueryBuilder で行数を数える。
-
[解決済み】Symfony 2.xでは、本当にすべてをバンドルにすべきなのか?
-
[解決済み] Symfony2 の config.yml から設定を読み込むには?
-
[解決済み] Symfony2のTwigテンプレートで設定パラメータを取得する方法
-
[解決済み] findAll Doctrine のメソッドを並べ替えるには?
-
[解決済み] Doctrine 2 は manyToOne リレーションで nullable=false を使うことはできないのですか?
-
[解決済み] Symfony2 と Doctrine - Error: Invalid PathExpression. StateFieldPathExpressionでなければなりません。
-
[解決済み] テンプレート内のログインユーザーにアクセスする
-
[解決済み] Symfony 3 の新しいディレクトリ構造は何ですか?