MySQLのPHPARRAY形式データをLaravelシーダーに登録する方法

animal_chara_radio_penguin ※Web開発


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を付けた名前にする必要があります。

参考資料

その他

  • データ量が多い場合は、chunk()メソッドを使って分割して登録することができます。
  • シーダー実行後にデータを編集したい場合は、migrate:refreshコマンドを実行してマイグレーションを再実行する必要があります。

ご質問

上記の方法でうまくいかない場合は、具体的なエラー内容や環境情報を教えていただければ、解決策を提示できる可能性があります。

タイトルとURLをコピーしました