Toidicode.com

Toidicode.com

BASIC TO ADVANCE

Bài viết bạn đang xem là tài liệu của Laravel 5x (Giờ đã ngừng support). Bạn có thể xem tài liệu của Laravel mới nhất và đầy đủ tại đây.

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 để 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 Illuminate\Database\Seeder;

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 Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

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 Illuminate\Database\Seeder;

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!

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Vũ Thanh Tài

About author
The best way to learn is to share
Xem tất cả bài đăng

2 Comments

Ai vô ý thức thì sẽ thấy khó chịu thôi à

Vũ Thanh Tài

5 năm trước

Bình luận

Captcha