1

(必要に応じてこの CW を作成してください) 私たちは 2 人の開発者で、Web アプリケーション ベース (PHP5、ZF、Doctrine、MySQL5) に取り組んでいます。それぞれローカル Web サーバーとローカル データベースで作業しています。データベース スキーマは YAML ファイルで定義されます。

データベース スキーマの同期を保つ最善の方法は何ですか?

その方法は次のとおりです。開発者「A」が変更を行うたびに、彼は移行クラスを生成します。次に、移行ファイルをコミットし、開発者「B」が移行クラスを実行します。

しかし、データベースを変更するたびに移行クラスを作成するのは、かなり面倒なプロセスです。

より良い解決策はありますか?

4

2 に答える 2

1

Doctrine を使用して Zend Framework でどのように動作するかわかりません。Propel を使用して Symfony で行う方法は次のとおりです。正確な手順は異なる場合がありますが、基本的な概念は同じです。

DAL で単体テストを行っています。

スキーマが変更されるたびに、yml と生成された ORM コードをチェックインします (ソース管理はありますよね) チェックインを自動モードに設定しました。つまり、すべてのチェックインを即座に取得します。

スキーマの変更が私のものに影響しない場合は、変更を無視します。しかし、スキーマの変更が私のものを壊した場合、 symfony propel build commandを使用して、フォーム、ORM クラスなどを再構築します。これらのインフラストラクチャの再構築は 1 つのコマンド ラインで行うだけなので、問題はありません。

最後に、再構築後、単体テストを実行して、すべてが問題ないことを確認します。そうでない場合は、修正した方がよいでしょう。

于 2009-09-29T02:03:53.640 に答える
0

この質問はすでに回答されているようですが、Doctrine はすべてを吹き飛ばすことなくデータベースを移行できます。ある開発者が自分のローカル yaml ファイルを変更し、新しいモデルをローカルで生成し、Doctrine を使用して移行を作成し、その移行をローカルで実行してデータベースを変更し、新しい yaml ファイルと移行の両方をチェックインするすべてのスキーマ変更にこれを使用します。次に、他の開発者が変更された yaml ファイルと移行をチェックアウトし、新しいモデルを生成して移行を実行し、データベースを同期します。コードを QA 環境と本番環境にデプロイするプロセスは、ほとんど同じです。

Doctrine の移行に関する詳細情報は、Doctrine サイトにあります。

于 2009-12-02T06:31:13.160 に答える