yiiのデータベース移行は、データベーススキーマの変更を管理するための堅牢でバージョン制御された方法を提供します。コアコンセプトには、それぞれがデータベースの単一の原子変化を表す移行クラスの作成が含まれます。これらの変更は、通常、テーブル、列、インデックス、および関係の追加、変更、または削除です。
ここにプロセスの内訳があります:
yiiが新しい移行ファイルを生成してコマンドを使用します。このコマンドは名前を求めます。このコマンドは、<code> yii \ db \ migration
を拡張するPHPクラスを作成するために使用されます。このクラスには、 up()
and down()
メソッドが含まれます。 down()
メソッドには、ロールバックに重要なこれらの変更を取り消すための逆SQLステートメントが含まれています。 yiiは droptable()
などのヘルパーメソッドを提供します。 (移行履歴テーブルに基づいて、まだ適用されていない移行)。これにより、適用されていない移行の up()
メソッドが実行されます。複数の移動を復活させるために数値を指定できます。例:ユーザーを作成する移行
テーブルは次のようになります。クラスM231027_100000_CREATE_USERS_TABLE EXTERPETS MIGRATION {public Function up(){$ this-&gt; createTable( 'users'、['id' =&gt; $ this-&gt; primarykey()、 'username' =&gt; gt; $ this-&gt; =&gt - &gt; string - &gt; gt; $ this-&gt; integer() - &gt; notnull()、]); } public function down(){$ this-&gt; droptable( 'users'); }}
効果的なデータベース移行を作成することは、クリーンで管理可能なデータベーススキーマを維持するための鍵です。いくつかのベストプラクティスを次に示します。
down()
メソッド: down()
メソッドを常に実装して、 up()
で行われた変更を逆転させます。これはロールバックにとって重要であり、データの整合性を保証します。 down()
メソッドを徹底的にテストします。複数の開発者が移行に同時に動作する場合、または移行が半分に失敗した場合に競合が発生する可能性があります。 YIIは、これらの状況に対処するためのメカニズムを提供します:
up()
メソッドの任意の部分が失敗した場合、移行全体が自動的にロールバックされ、データの整合性が維持されます。理由は次のとおりです。スキーマの移行はデータベース構造に焦点を当て、データシードはデータベースの初期データの居住に焦点を当てています。
ただし、シードを含める必要がある場合は、移行の up()
メソッド内にデータ挿入ロジックを追加できます。適切なロールバックを可能にするために、 down()
メソッドに対応するデータ削除を含めることを忘れないでください。このアプローチは、一般に、大規模なデータセットに対しては推奨されていません。 yii移行/作成
を使用して、データシードのために特に個別の移行を生成し、プロセスをより整理することを検討してください。または、より大きく、より複雑なデータセットにフィクスチャデータまたは専用のデータシードスクリプトを使用することを検討してください
以上がYiiのデータベース移行を使用してスキーマの変更を管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。