Toidicode.com

Toidicode.com

BASIC TO ADVANCE

Bài 28: Seeder trong Laravel 8

Tiếp tục với chuỗi bài làm việc với Database trong Laravel, bài này mình sẽ giới thiệu với mọi người về seeder trong Laravel 8.

1. Seeder là gì?

Seeder trong Laravel là class cho phép chúng ta xử lý dữ liệu trong database. Class này sẽ hỗ trợ chúng ta tạo ra data test, thay đổi cập nhật dữ liệu khi cần thiết.

Tất cả các seeder trong Laravel đều được đặt trong thư mục database/seeders. Mặc định thì Laravel đã định nghĩa sẵn cho chúng ta class DatabaseSeeder nằm sãn trong thư mục trên. Và chúng ta có thể sử dụng phương thức call để gọi các seeder khác khi cần thiết.

2. Tạo mới Seeder.

Để tạo mới một seeder trong Laravel các bạn có thể sử dụng command:

php artisan make:seeder SeederName

Trong đó: SeederName là tên của seeder các bạn muốn tạo.

VD: Mình sẽ tạo một UserSeeder.

php artisan make:seeder UserSeeder

Một Seeder class mặc định chỉ chứa duy nhất một phương thức run. Phương thức này sẽ được thực thi khi chúng ta chạy câu lệnh db:seed. Trong phương thức này các bạn có thể viết logic để làm việc với DB như sử dụng Query Builder hoặc dùng Eloquent model factories.

VD: Mình sẽ sử dụng Query Builder insert thêm user trong UserSeeder vừa tạo ở trên.

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;

class UserSeeder 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' => Hash::make('password'),
        ]);
    }
}

Gọi các seeder khác.

Để thực thi các seeder khác trong seeder nào đó các bạn có thể sử dụng phương thức call.

VD: Gọi UserSeeder trong DatabaseSeeder.

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
       $this->call([
           UserSeeder::class
       ]);
    }
}

3. Chạy seeder.

Để thực thi các seeder trong Laravel các bạn sử dụng câu lệnh

php artisan db:seed

Câu lệnh này sẽ thực thi Database\Seeders\DatabaseSeeder class.

Để thực thi một seeder cụ thể trong Laravel các bạn truyền thêm tham số --class với seeder class các bạn muốn chạy.

VD: Thực thi UserSeeder.

php artisan db:seed --class=UserSeeder

Khi ứng dụng qua bạn đang ở trên production, mà các bạn chạy seeding thì Laravel sẽ hiển thị ra một prompt để xác nhận lại xem các bạn có thực sự muốn thực thi seeder trên production hay không. Nếu các bạn không muốn hiển thị prompt mà muốn force chạy luôn seed các bạn có thểm truyền thêm tham số --force.

VD:

php artisan db:seed --force

3. Lời kết.

Trong quá trình phát triển dự án, việc thay đổi dữ liệu database là điều không tránh khỏi, chính vì thế seeder sẽ hỗ trợ chúng ta làm việc đó một cách đơn giản.

Đă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

0 Comments

Bài viết chưa có ai bình luận, hãy là người đầu tiên đi bạn!

Bình luận

Captcha