単数形に変換されないようにする

symfony1.1を使い始めると同時にDoctrineに乗り換えました。
Propelに比べたらかなり直感的ですし、明らかに学習コストも低いですね。
もちろん、Propelだけにしか対応していないようなプラグインも多々あるので、その辺りと天秤にかけて決定すると良いよ。

で、お題の件。
自分の場合は、スキーマファイルはDBを作成した後に、タスクコマンドで生成するようにしています。
一番の理由はyamlXMLの記述間違いで時間をつぶしたくないのと、phpMyAdminなどでテーブルを作成したほうが早いですし。
さらには、スキーマファイルからテーブル作成すると勝手にdropされることもあるし。。

で、いつものように物理的なテーブルを作成してから以下のコマンドで作成しました。

$ ./symfony doctrine:build-schema backend

そうすると作成されたschema.ymlを見てみるとテーブル名がGoodsのモデル名がGoodに。。

Doctrineのマニュアルにはちゃんと書いてありますね。。

デフォルトではDoctrineは既存のデータベースから読み込まれた各モデルの名前を単数型にしようとします。

このルールのために、コマンドで既存DBからスキーマを作成させると単数形のモデル名でschema.ymlが作成されてしまいます。

propelしか触った事がなければ「なぬ!」となりますが、
DoctrineはActive Recordの影響を受けてますのでCakePHPをつかったことがあれば「あー。あれね」ぐらいなものでしょうか。

これをキッカケにこの規則に合わせようかとも思いましたが、Goodに違和感を感じてしまいます。(設計の段階でItemsとかにすれば良いのにというオチなんですけどね。。。)

というわけで、この設定を無効にするためDoctrine_Managerのattributeの singularize_importを falseにしなさいとマニュアルには書いてあります。

symfonyではDoctrineはプラグインでインストールしていますので、プラグインの設定をすればよさげです。
そこで、<プロジェクトルート>/config/doctrine.ymlというファイルを作成して

all:
  attributes:
    singularize_import: false 

としてやるだけで設定を無効にできました。