3

古いデータを新しいスキーマに対応させるために、一連の SQL 命令 (およびおそらく非 SQL スクリプト) が必要になる、データベースへの大きな変更を計画しています。

さて、移行スクリプトでデータを操作するのは良い考えでしょうか? それとも、スキーマ (DB 構造) の変更のみを目的としていますか?

4

2 に答える 2

0

データ操作は移行のためのものではありません。自然の移行の作品のため。移行を使用して、データベース スキーマのみを定義することをお勧めします。

移行は、作成された正確な順序で、Laravel によって 1 つずつ実行されるように作成されているため、実行と実行の順序を追跡できます。アントニオ・カルロス・リベイロ。

これにより、実行したいクラスやファイルを担当することができなくなります。たとえば、部門テーブルの前にユーザー テーブルをシードすることを選択できます。別の意味では、その逆を選択できます。移行には、この自由はありません。

データ操作では、使用することでいつでも実行するクラスを選択できるため、シーダーを使用してそれを処理することをお勧めします

php artisan db:seed --class=クラス名

その名の通り種。データベースに入力することを意味します。

于 2016-02-26T20:43:44.860 に答える
0

移行について考えるとき、2 つの懸念事項が重要です。

  1. speed: 通常、php にはタイムアウトがあります。移行の半分が完了するとどうなりますか?
  2. この移行を数か月後に実行すると、アプリのコードが異なる可能性があります。

生のクエリは、これらの問題の両方に役立ちます。

$elements = DB::Select(DB::Raw('SELECT element_id FROM record GROUP BY element_id'));

foreach ($elements as $element)
{
    DB::Statement('
        INSERT INTO account (created_at, updated_at, name, element_id)
        VALUES (NOW(), NOW(), "Migrated account", '. $element->element_id .')
    ');
}
于 2017-11-17T00:38:50.450 に答える