Skip to main content

Create a Seeder: Generate a seeder class using Artisan that will insert the dummy user

To insert a dummy user for testing purposes so you don't need to insert it manually each time you run `php artisan migrate:fresh`, you can use Laravel's seeding feature. 


Here's a step-by-step guide to achieve this:


1. **Create a Seeder**: Generate a seeder class using Artisan that will insert the dummy user.


   ```bash

   php artisan make:seeder UserSeeder

   ```


2. **Define Seeder Logic**: Update the `UserSeeder` class to insert the dummy user. Open `database/seeders/UserSeeder.php` and add the following code:


   ```php

   <?php


   namespace Database\Seeders;


   use Illuminate\Database\Seeder;

   use Illuminate\Support\Facades\DB;

   use Illuminate\Support\Str;

   use Illuminate\Support\Facades\Hash;


   class UserSeeder extends Seeder

   {

       /**

        * Seed the application's database.

        *

        * @return void

        */

       public function run()

       {

           DB::table('users')->insert([

               'user_id' => Str::uuid(),

               'first_name' => 'John',

               'middle_name' => 'D',

               'last_name' => 'Doe',

               'email' => 'john.doe@example.com',

               'password' => Hash::make('password'), // Use a default password or any secure value

               'role_id' => 1,

               'created_at' => now(),

               'updated_at' => now(),

           ]);

       }

   }

   ```


   In this example:

   - `Str::uuid()` generates a unique UUID for `user_id`.

   - `Hash::make('password')` hashes the password for security.

   - `now()` sets the current timestamp for `created_at` and `updated_at`.


3. **Call Seeder from DatabaseSeeder**: Open `database/seeders/DatabaseSeeder.php` and call the `UserSeeder` within the `run` method:


   ```php

   <?php


   namespace Database\Seeders;


   use Illuminate\Database\Seeder;


   class DatabaseSeeder extends Seeder

   {

       /**

        * Seed the application's database.

        *

        * @return void

        */

       public function run()

       {

           // Call the UserSeeder

           $this->call(UserSeeder::class);

       }

   }

   ```


4. **Run the Migrations and Seeders**: To ensure that your migrations and seeders run properly, you should use the following command:


   ```bash

   php artisan migrate:fresh --seed

   ```


   This command will drop all tables, re-run the migrations, and then seed the database with the dummy user.


### Summary

With this setup, you won't need to manually insert the dummy user each time you run `php artisan migrate:fresh`. Instead, the dummy user will be automatically inserted by the seeder. This approach is more efficient and keeps your testing process streamlined.

Comments

Popular posts from this blog

Laravel Commands

Laravale commands #Check route list php artisan route:list #Check upload files links php artisan storage:link #Check database connected or not php artisan db #Make Request file php artisan make:request YourNameRequest #Make Controller #(In this statement you used -r -> resources and -m -> model. It will create CustomersController and Customers Model files) php artisan make:controller CustomersController -r -m Customers #Make Resource file php artisan make:resource CustomersResource #To check migration files status that those files are running or not with below commands php artisan migrate:status #To check if there is any pending migrate files to run #(also this command shows us the mysql query before running migration file) php artisan migrate --pretend #To make a database table (in this example Products name as taken) php artisan make:migration create_products_table #To create a Request file php artisan make:request StoreProductRequest php artisan make:request Up

Mysql columns creation in laravel

List of columns  $table->id(); // increment value $table->string('title')->comment('this is blog title'); $table->string('slug')->unique(); $table->text('short_desc'); $table->longText('description'); $table->boolean('is_published')->default(false); $table->integer('min_of_read')->nullable(true); $table->enum('status', ['Active', 'Inactive']); $table->float('discount'); $table->smallInteger('type_id'); $table->date('start_date')->nullable(); $table->timestamps(); $table->foreign('created_by')->references('id')->on('users'); // introducing foreign key $table->unsignedBigInteger('user_id'); //? $table->decimal('latitude', 9, 6)->nullable(true); // Let's say you want starting value from 1000 $table->id()->from(1000); // increment value start from 1000 ->nullabl

React Advanced JSX

 class vs className This lesson will cover more advanced JSX. You’ll learn some powerful tricks and some common errors to avoid. Grammar in JSX is mostly the same as in HTML, but there are subtle differences to watch out for. The most frequent of these involves the word class. In HTML, it’s common to use class as an attribute name: <h1 class = "big" > Title </h1> In JSX, you can’t use the word  class ! You have to use  className  instead: <h1 className = "big" > Title </h1> This is because JSX gets translated into JavaScript, and  class  is a reserved word in JavaScript. When JSX is  rendered , JSX  className  attributes are automatically rendered as  class  attributes. Self-Closing Tags Another common JSX error involves  self-closing tags . What’s a self-closing tag? Most HTML elements use two tags: an  opening tag  ( <div> ), and a  closing tag  ( </div> ). However, some HTML elements such as  <img>  and  <input>  u