1. データの準備
まず、MySQLからPHPARRAY形式でデータを抽出する必要があります。
SQL
SELECT * FROM テーブル名
WHERE 条件
ORDER BY ソート順
FOR JSON PATH;
コードは注意してご使用ください。content_copy
このクエリを実行すると、JSON形式のデータが返されます。
2. シーダーファイルの作成
次に、Laravelプロジェクト内にシーダーファイルを作成します。
php artisan make:seeder テーブル名Seeder
3. データの登録
作成したシーダーファイルに、以下のコードを追加します。
PHP
<?php
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class テーブル名Seeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
// データファイルのパス
$data_file = __DIR__ . '/data.json';
// データファイルを読み込み
$data = json_decode(file_get_contents($data_file), true);
// データを登録
foreach ($data as $row) {
DB::table('テーブル名')->insert($row);
}
}
}
コードは注意してご使用ください。content_copy
4. シーダーの実行
最後に、以下のコマンドを実行してシーダーを実行します。
php artisan db:seed --class=テーブル名Seeder
注意点
- データファイルのパスは、環境に合わせて変更する必要があります。
- データファイルの形式は、PHPARRAY形式である必要があります。
- シーダーファイルの名前は、
テーブル名Seeder
のように、テーブル名にSeeder
を付けた名前にする必要があります。
参考資料
- Laravel シーダー: https://laravel.com/docs/8.x/seeding
- MySQL JSON: https://dev.mysql.com/doc/refman/8.0/en/json.html
その他
- データ量が多い場合は、
chunk()
メソッドを使って分割して登録することができます。 - シーダー実行後にデータを編集したい場合は、
migrate:refresh
コマンドを実行してマイグレーションを再実行する必要があります。
ご質問
上記の方法でうまくいかない場合は、具体的なエラー内容や環境情報を教えていただければ、解決策を提示できる可能性があります。