2010-12-03 5 views
4

複数の開発者間のデータベース変更を処理するために、私の環境にDoctrineの移行を導入することを考えています。私は以前にそれらを使用していないが、私はその問題について私の研究を行った。Fixtures

私の唯一の懸念は、[私が知る限り] Doctrineの移行では治具の変更が許可されていないことです。マイグレーションはスケマティックな変更であることを認識していますが、フィクスチャの変更も同様に重要です。

リファレンステーブルのフィクスチャを自分のデータベース(つまり* _type、* _sourceなど)にしたいと思います。これらのマイグレーションでも行の追加/削除/更新を処理する必要があります構造的変化と同様に重要です。

誰かがここで私を正しい方向に向けることができれば、それは非常に感謝しています。

更新

私は単にSVNは私の参照テーブル備品を追跡させるというアイデアを探求し、これがデプロイ不可能解決策になることでしょう。テーブルは、外部キー制約のために切り捨てられたり、再設定されたりすることはできません。

答えて

2

あなたが指摘したように、移行は、データベースに構造的な変更を容易にすることであり、それに合わせてフィクスチャーデータを操作するのではありません。

私の経験では、アプリケーションの開発中にマイグレーションを使用することは、特に、開発者Aが新しいマイグレーションを作成してすぐにコミットしない場合や、マイグレーションを新規作成する場合開発者Aの移行と(それにもかかわらず)衝突し、すぐにチェックインします。開発者Aはすぐに移行をチェックし、2つの相反する移行があり、世界が爆発する。

schema.ymlでスキーマを変更し、スキーマの変更を(プライベートマイグレーションまたは手動で)適用してからdoctrine:data-dumpをコミットしてより良い結果を得ることができます治具のデータ。

開発時に移行を選択する場合、Doctrine Migrationクラスの->postUp()および->preUp()メソッドを使用して、インサイチュでデータを変換することを検討する必要があります。

+0

これはまさに私が探していたものです(ref http://www.doctrine-project.org/projects/orm/1.2/docs/manual/migrations/en#writing-migration-classes:pre-andポストフック)。ありがとう、ジャーミン また、あなたのアプローチがより良いアプローチであるように見えますが、定期的な構造変更を生産に移行することがどれほど簡単かはわかりません。 – Craige

+0

Doctrineのマイグレーションはすごくクールです - お楽しみください – BenLanc

+0

@MrJasmin、あなたがsqliteを使っていない限り.. Doctrine:data-dumpはsqliteでマイグレーションを行う唯一の方法です。 – Dziamid

関連する問題