07/09/2018, 17:33

Bài 17: Seeding trong Laravel

Ở Các phần trước mình đã giới thiệu với mọi người về Migrations với Schema Builder Nhưng vấn đề là nó mới chỉ tạo ra các cấu trúc của database còn dữ liệu thì thêm như thế nào, ở đây chắc chắn sẽ có bạn nói rằng sẽ thêm bằng phpMyadmin nhưng ở đây Laravel đã cung cấp cho chúng ta một thứ rất hay ...

Ở Các phần trước mình đã giới thiệu với mọi người về Migrations với Schema Builder Nhưng vấn đề là nó mới chỉ tạo ra các cấu trúc của database còn dữ liệu thì thêm như thế nào, ở đây chắc chắn sẽ có bạn nói rằng sẽ thêm bằng phpMyadmin nhưng ở đây Laravel đã cung cấp cho chúng ta một thứ rất hay để thêm dữ liệu mẫu vào database.

1, Seeding là gì?

-Seeding hay còn gọi là seeder,seed,.. thực ra nó là một class chứa code để tạo ra các dummy data(dữ liệu mẫu) cho database trong quá trình xây dựng ứng dụng.

-Trong Seeder chúng ta có thể viết code của Query builder.

2,Sử dụng seeder.

Sử dụng seeder gốc.

-Mặc định trong laravel có cung cấp cho chúng ta một DatabaseSeeder.php trong thư mục database/seeds/ có code sẵn như sau:

<?php

use IlluminateDatabaseSeeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        // $this->call(UsersTableSeeder::class);
    }
}

Và để sử dụng nó chúng ta chỉ cần viết code của Query Builder vào đó.

VD: Mình sẽ thêm dữ liệu cho bảng users (name,email,password) như sau:

<?php

use IlluminateDatabaseSeeder;
use IlluminateDatabaseEloquentModel;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('users')->insert([
            'name' => str_random(10),
            'email' => str_random(10).'@gmail.com',
            'password' => bcrypt('secret'),
        ]);
    }
}

  Và để chạy nó chúng ta sẽ dùng lệnh.

php artisan db:seed

-Tuy nhiên thông thường khi làm dự án thực tế thì chúng ta sẽ không lên làm như thế, bởi vì như thế sẽ rất khó quản lý, nên chúng ta sẽ phải chia nhỏ ra từng file cho từng table để quản lý.

Tạo seeder.

-Để tạo Seeder trong Laravel chúng ta dùng lệnh:

php artisan make:seed seedName

-Với seedName: là tên của seed các bạn muốn tạo (nên đặt tên có ý nghĩa để sau này dễ quản lý).

VD: Mình muốn tạo file Users.php để quản lý dữ liệu cho bảng users.

-Đầu tiên chúng ta sẽ dùng lệnh: php artisan make:seed Users.php.

-Sau đó chúng ta vào database/seeds sẽ thấy một file Users.php có nội dung như sau:

<?php

use IlluminateDatabaseSeeder;

class Users extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //
    }
}

-Giờ chúng ta chỉ cần chèn code Query Builder vào hàm run như VD trên là được.

-Tiếp đó chúng ta sẽ có hai cách chạy:

  • Dùng lệnh: php artisan db:seed --class=Users
  • Vào file DatabaseSeeder.php thêm đoạn $this->call(Users::class); vào hàm run (Users có thể thay đổi bằng tên file của bạn muốn thực hiện lệnh) và chúng ta lại dùng lệnh php artisan db:seed

3,Lời kết.

-Phần trên mình đã giới thiệu với các bạn về Seeder  cơ bản, còn một số các kiến thức nâng cao về Seeder  mình sẽ giới thiệu với các bạn vào một dịp khác nhé! Chúc các bạn học tốt!

0