1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Symfony 2で既存テーブルをEntityに自動生成する

Posted at

何が面白くてPHP5系のSymfony2系をやってるのか ってのはさておき。。。

ちょっとSymfony2にてEntity生成時に詰まった部分を纏める

Symfony ver PHP ver
Symfony2.7 PHP5.3

Entity 生成

基本的にSymfony2のDocumentにも記載されているよう以下コマンドで行う

terminal
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出力せずに以下コマンドだけでやればいいかな。
と思い実行。

terminal
php app/console doctrine:mapping:import {Bundle}
php app/console doctrine:generate:entitites --no-backup {Bundle}

Entityの生成は出来たが、
getter、setterがセットされない…なぜ…

と数時間Google先生に必死に効くも、この理由はわからなかった。

ので最終的に以下の形式のコマンドを纏めて実行することでカスタムリポジトリを利用するようにした

terminal
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生成)が、完全に同じようにもう一度試したら二回目はうまくいかなかった。

きっとなにか原因があるのだろうが、これ以上時間割くことを諦めた。。
テーブル数が多すぎるのかもしれない(素晴らしい実績のあるレガシーコードだからもう綺麗にすら出来ないので諦めた)

この事象に関して知見があるお方がいましたら是非コメント頂けると助かります…。(僕が納得するという意味で)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?