LaravelでJSONファイルからシードデータを取得する方法


  1. JSONファイルの作成: まず、シードデータを含むJSONファイルを作成します。例えば、"data.json"という名前のファイルを作成し、以下のようなデータを入力します。
[
  {
    "title": "ブログ投稿1",
    "content": "これは最初の投稿です。"
  },
  {
    "title": "ブログ投稿2",
    "content": "これは2番目の投稿です。"
  },
  ...
]
  1. シーダーファイルの作成: 次に、Laravelのシーダーファイルを作成します。ターミナルまたはコマンドプロンプトで以下のコマンドを実行します。
php artisan make:seeder BlogSeeder

これにより、database/seedersディレクトリにBlogSeeder.phpというファイルが作成されます。

  1. シーダーファイルの編集: BlogSeeder.phpファイルを開き、以下のように編集します。
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\BlogPost;
use Illuminate\Support\Facades\File;
class BlogSeeder extends Seeder
{
    public function run()
    {
        $json = File::get(database_path('data.json'));
        $data = json_decode($json);
        foreach ($data as $post) {
            BlogPost::create([
                'title' => $post->title,
                'content' => $post->content
            ]);
        }
    }
}

上記のコードでは、data.jsonファイルを読み込み、各投稿のタイトルと内容を使ってBlogPostモデルを作成しています。App\Models\BlogPostの部分は、実際のモデルの名前に置き換えてください。

  1. シーダーの実行: 最後に、シーダーを実行してシードデータをデータベースに挿入します。以下のコマンドを実行します。
php artisan db:seed --class=BlogSeeder

これにより、BlogSeederクラスのrunメソッドが実行され、JSONファイルからデータがデータベースに挿入されます。

これで、LaravelでJSONファイルからシードデータを取得する方法がわかりました。必要に応じて、JSONファイルのパスやモデルの設定を変更してください。