Laravel 5 Load Seed Data từ JSON

Trên laravel bạn muốn import dữ liệu từ 1 file Json có sẵn, sử dụng seeder của laravel, đây là một Tip hay dành cho bạn. Ở đây tôi muốn seed dữ liệu users.
- Giả sử tôi có 1 file users.json, tôi đặt file này trong thư mục database của laravel. File json của tôi có dạng:

[
  {
    "id": "1",
    "email": "admin@admin.com",
    "first_name": "Minh",
    "last_name": "Nguyen",
    "password": "$2y$10$5dIuEeS1C4oKij41rYFBU.SXtaztO2XqHHvT/U3Mi9wB86znOcqY2"
  },
  {
    "id": "2",
    "email": "aaaa@minhcat.info",
    "first_name": "Lan",
    "last_name": "Ngoc",
    "password": "$2y$10$5dIuEeS1C4oKij41rYFBU.SXtaztO2XqHHvT/U3Mi9wB86znOcqY2"
  },
  {
    "id": "3",
    "email": "bbbb@minhcat.info",
    "first_name": "Van",
    "last_name": "Test",
    "password": "$2y$10$5dIuEeS1C4oKij41rYFBU.SXtaztO2XqHHvT/U3Mi9wB86znOcqY2"
  }
]

- Tiếp theo tôi tạo file seeder trong thư mục /database/seeds
UserTableSeeder.php
 delete();
        $json = File::get("database/users.json");
        $data = json_decode($json);
        foreach ($data as $obj) {
          User::create(array(
            'id' => $obj->id,
            'email' => $obj->email,
            'first_name' => $obj->first_name,
            'last_name' => $obj->last_name,
            'password' => $obj->password
          ));
        }
    }
}
?>

- File migration để tạo tables users:
increments('id');
               $table->string('email')->unique();
               $table->string('first_name');
               $table->string('last_name');
               $table->string('password', 60);
               $table->rememberToken();
               $table->timestamps();
          });
     }
     /**
     * Reverse the migrations.
     *
     * @return void
     */
     public function down()
     {
          Schema::drop('users');
     }
}
 - Bây giờ bạn chỉ việc chạy lệnh: "php artisan db:seed" là dữ liệu sẽ được đưa vào database từ file json của bạn.

0 Nhận xét:

Đăng nhận xét

Rất mong các ý kiến của các bạn khi đọc bài viết này !