- JSONファイルの作成: まず、シードデータを含むJSONファイルを作成します。例えば、"data.json"という名前のファイルを作成し、以下のようなデータを入力します。
[
{
"title": "ブログ投稿1",
"content": "これは最初の投稿です。"
},
{
"title": "ブログ投稿2",
"content": "これは2番目の投稿です。"
},
...
]
- シーダーファイルの作成: 次に、Laravelのシーダーファイルを作成します。ターミナルまたはコマンドプロンプトで以下のコマンドを実行します。
php artisan make:seeder BlogSeeder
これにより、database/seeders
ディレクトリにBlogSeeder.php
というファイルが作成されます。
- シーダーファイルの編集:
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
の部分は、実際のモデルの名前に置き換えてください。
- シーダーの実行: 最後に、シーダーを実行してシードデータをデータベースに挿入します。以下のコマンドを実行します。
php artisan db:seed --class=BlogSeeder
これにより、BlogSeeder
クラスのrun
メソッドが実行され、JSONファイルからデータがデータベースに挿入されます。
これで、LaravelでJSONファイルからシードデータを取得する方法がわかりました。必要に応じて、JSONファイルのパスやモデルの設定を変更してください。