2012-04-12 10 views
2

私が理解しようとしているのは、Doctrine2でSymfony2を使ってテーブルに新しいフィールドを追加する方法です。Symfony2 Doctrine2コンソール/生成機能を使用してテーブルを変更しますか?

私が最初にエンティティを作成するために、これを使用:

php app/console doctrine:generate:entity --entity="MyMainBundle:ImagesTable" --fields="title:string(100) file:string(100)" 

そして私は、データベース上のテーブルを更新/作成し、これを使用:

php app/console doctrine:schema:update --force 

私は新しいフィールドを追加したい場合ImagesTableエンティティは、consoleを使用して簡単に実行できますか、またはエンティティを手動で編集する必要がありますか。私はちょうど1つの実体を例として使用していますが、現実には、私が変わることになる多くの実体があります。だから、もっと簡単な方法が必要です。

私は人間関係を作成するためにそれらを手動で編集しています。そのための簡単な方法があれば、それは素晴らしいことです。

Symfony1.4の方がずっと簡単です。phpMyAdminを使ってデータベース/テーブルを作成するだけで、Symfonyは問題のないモデルを生成できました。

すべての変更に対してすべてのエンティティを手作業で編集する必要がある場合は、これが機能しないため、ここで何か不足していることを本当に願っています。

答えて

1

Doctrineジェネレータコマンドは、開発者がアイデアをすばやくプロトタイプ作成するのに役立ちます。彼らは一般にプロダクション・レディ・コードを生成せず、コードに必要なものが含まれているかどうかをチェックする必要があります。

phpmyadminでモデルを作成してDoctrine reverse engineering toolsを使用することもできますが、プロトタイプ作成でのみ使用できるプロダクション対応のコードは作成されません。

テーブルの基本的な関係は、モデルのオブジェクト間の関係と同じではないため、あらかじめデータベース/テーブルを作成することはDoctrine2ではうまくいきません。 ORMの全ポイントは、クラスで考えることと、Doctrineにあなたの仕事の残りをさせることです。

Doctrineはあなたのエンティティを記述するためのものではなく、データモデルを構築するためのツールを提供します。このツールを使用して、PHPでモデルをコーディングします。

doctrineを使用しているすべての開発者が手作業でエンティティを作成したくない場合は、RedbeanPHP(PHP用のゼロ設定ORMフレームワーク)が必要です。これは、使用するデータモデルに応じて、データベーステーブル、カラム、インデックスをオンザフライで作成します。

+0

私は絶対にすべてを生成したいと言っているわけではありませんが、基本(セッターとゲッター)を生成することを期待しています。私は手動でテーブルやエンティティを後で変更しようとしている場合は、15の異なるフィールドのような入力セッターとゲッターを手動で座らせる必要はありません。私はここで私のポイントを逃したと思う... – xil3

+0

[エンティティを生成する](http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/tools.html)があります#entity-generation)コマンドを実行しますが、ここでも基本的なセッターとゲッターが生成されます。あなたのエンティティに含めるロジックの量によっては、解決策ではないかもしれません。また、継承のための正しいエンティティを生成しません。 –

+0

はい、私は知っていますが、元の質問は、既存のエンティティにフィールドを追加するコマンドがあるかどうか尋ねました。それ以外の場合は、各フィールドを手動で追加する必要があります(プロパティとgetter/setter)。または、私はエンティティを削除して再生成することができたと思いますが、最適な解決策としては認識されません。 – xil3

関連する問題