如何在Laravel中从JSON文件填充数据库种子数据?
Laravel 使用JSON文件填充数据库种子数据
1. 创建对应数据库表的迁移文件
首先生成迁移文件:
php artisan make:migration create_users_table
打开生成的迁移文件(位于database/migrations/目录),修改up()方法,定义与JSON数据匹配的表结构:
public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->integer('age'); $table->timestamps(); }); }
执行迁移创建表:
php artisan migrate
2. 编写Seeder类读取JSON数据并插入
首先生成Seeder类:
php artisan make:seeder UsersSeeder
将你的data.json文件放在database/seeds/json/目录下(如果没有json文件夹请自行创建)。然后打开生成的UsersSeeder.php文件,修改run()方法:
use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\File; class UsersSeeder extends Seeder { public function run() { // 读取JSON文件内容 $json = File::get(database_path('seeds/json/data.json')); // 解码为数组 $users = json_decode($json, true); // 批量插入数据 DB::table('users')->insert($users); // 如果有对应的User模型,也可以用模型插入: // foreach ($users as $user) { // \App\Models\User::create($user); // } } }
最后执行Seeder填充数据:
php artisan db:seed --class=UsersSeeder
如果需要一次性运行所有Seeder,可以在DatabaseSeeder.php的run()方法中添加:
$this->call(UsersSeeder::class);
然后执行:
php artisan db:seed
内容的提问来源于stack exchange,提问作者Muhammed Salama
相关产品推荐
相关产品推荐

