古いデータを新しいスキーマに対応させるために、一連の SQL 命令 (およびおそらく非 SQL スクリプト) が必要になる、データベースへの大きな変更を計画しています。
さて、移行スクリプトでデータを操作するのは良い考えでしょうか? それとも、スキーマ (DB 構造) の変更のみを目的としていますか?
古いデータを新しいスキーマに対応させるために、一連の SQL 命令 (およびおそらく非 SQL スクリプト) が必要になる、データベースへの大きな変更を計画しています。
さて、移行スクリプトでデータを操作するのは良い考えでしょうか? それとも、スキーマ (DB 構造) の変更のみを目的としていますか?
データ操作は移行のためのものではありません。自然の移行の作品のため。移行を使用して、データベース スキーマのみを定義することをお勧めします。
移行は、作成された正確な順序で、Laravel によって 1 つずつ実行されるように作成されているため、実行と実行の順序を追跡できます。アントニオ・カルロス・リベイロ。
これにより、実行したいクラスやファイルを担当することができなくなります。たとえば、部門テーブルの前にユーザー テーブルをシードすることを選択できます。別の意味では、その逆を選択できます。移行には、この自由はありません。
データ操作では、使用することでいつでも実行するクラスを選択できるため、シーダーを使用してそれを処理することをお勧めします
php artisan db:seed --class=クラス名
その名の通り種。データベースに入力することを意味します。
移行について考えるとき、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 .')
');
}