Trong bài viết trước, blog đã hướng dẫn cách tạo xác thực Laravel Auth và giao diện người dùng (UI). Các bạn có thể tạo người dùng từ trang đăng ký của Laravel một cách dễ dàng. Tuy nhiên, khi chúng ta triển khai sản phẩm lên môi trường production, việc tạo người dùng đầu tiên để đăng nhập là một vấn đề quan trọng. Chúng ta không thể nhập thủ công từ cơ sở dữ liệu mỗi lần.
Trong trường hợp này, giải pháp thông thường là chúng ta sẽ viết một script để tạo một người dùng mặc định, thường là người dùng quản trị (admin). Trong Laravel, bạn có thể thực hiện điều này dễ dàng bằng cách sử dụng các artisan command và Seeder.
Laravel Seeder là gì? chúng tôi sẽ cập nhật trong 1 bài viết khác.
Tạo User mặc định sử dụng Laravel Seeder
Bước 1: Sử dụng command artisan sau để tạo 1 file UserSeeder.php
php artisan make:seeder UserSeeder
Bước 2: Sử file database/seeders/UserSeeder.php vừa tạo ra.
<?php namespace DatabaseSeeders; use IlluminateDatabaseConsoleSeedsWithoutModelEvents; use IlluminateDatabaseSeeder; class UserSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run(): void { // Create admin user AppModelsUser::factory()->create([ 'name' => 'Admin', 'email' => 'admin@vinasupport.com', 'password' => bcrypt('123456'), ]); } }
Đoạn code trên sẽ tạo ra user có thông tin đăng nhập là admin@vinasupport.com/123456.
Bước 3: Sửa file database/seeders/DatabaseSeeder.php để call file vừa tạo
<?php namespace DatabaseSeeders; // use IlluminateDatabaseConsoleSeedsWithoutModelEvents; use IlluminateDatabaseSeeder; class DatabaseSeeder extends Seeder { /** * Seed the application's database. * * @return void */ public function run(): void { // AppModelsUser::factory(10)->create(); $this->call(UserSeeder::class); } }
Bước 4: Chạy command artisan để seed dữ liệu vào database.
php artisan db:seed --class=UserSeeder
Kết quả: