何が面白くてPHP5系のSymfony2系をやってるのか ってのはさておき。。。
ちょっとSymfony2にてEntity生成時に詰まった部分を纏める
Symfony ver | PHP ver |
---|---|
Symfony2.7 | PHP5.3 |
Entity 生成
基本的にSymfony2のDocumentにも記載されているよう以下コマンドで行う
php bin/console doctrine:mapping:import {Bundle名} xml
php app/console doctrine:mapping:import {Bundle名}
php app/console doctrine:generate:entitites --no-backup {Bundle名}
custom repository を利用したい場合
php bin/console doctrine:mapping:import {Bundle名} xml
を実行してしまうと
{Bundleディレクトリ}/Resources/config/doctrine
配下に各テーブル毎のxmlファイルが出力されてしまい
各Entityに記述されているannotationの制御が効かなくなる。という状態になってしまう。
なら、xml出力せずに以下コマンドだけでやればいいかな。
と思い実行。
php app/console doctrine:mapping:import {Bundle名}
php app/console doctrine:generate:entitites --no-backup {Bundle名}
…
Entityの生成は出来たが、
getter、setterがセットされない…なぜ…
と数時間Google先生に必死に効くも、この理由はわからなかった。
ので最終的に以下の形式のコマンドを纏めて実行することでカスタムリポジトリを利用するようにした
php bin/console doctrine:mapping:import {Bundle名} xml
php app/console doctrine:mapping:import {Bundle名}
php app/console doctrine:generate:entitites --no-backup {Bundle名}
rm -rf {Bundleディレクトリ}/Resources/config/doctrine
あまり納得がいかないがこれでカスタムリポジトリが利用できるから良しとする。
一回だけうまく行ったパターンがあった(xmlを出力せずにgetter setterが付くようにEntity生成)が、完全に同じようにもう一度試したら二回目はうまくいかなかった。
きっとなにか原因があるのだろうが、これ以上時間割くことを諦めた。。
テーブル数が多すぎるのかもしれない(素晴らしい実績のあるレガシーコードだからもう綺麗にすら出来ないので諦めた)
この事象に関して知見があるお方がいましたら是非コメント頂けると助かります…。(僕が納得するという意味で)