# 3.- Creando nuestro primer factory y Seed (Article)

Datos de prueba

  php artisan make:factory ArticleFactory
  php artisan make:seed ArticlesTableSeeder
  php artisan make:seed UsersTableSeeder
  • Ingresamos al archivo database/factories/ArticleFactory.php

    //Import Model User
    use App\Models\User;

    class ArticleFactory extends Factory
    {
        /**
         * Define the model's default state.
         *
         * @return array
         */
        public function definition()
        {   
            $title = $this->faker->sentence();
            return [
                'title' => $title,
                'slug' => Str::slug($title),
                'body' => $this->faker->paragraph(),
                'author_id' => $attribute['author_id'] ?? User::factory()
            ];
        }
    }

  • Ingresamos al archivo database/factories/UserFactory.php

     public function definition()
    {
        return [
            'name' => $this->faker->name(),
            'email' => $this->faker->unique()->safeEmail(),
            'email_verified_at' => now(),
            'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
            'remember_token' => Str::random(10),
        ];
    }
  • Ingresamos al archivo database/seeders/ArticlesTableSeeder.php
    //import Model Article
    use App\Models\Article;

     public function run()
    {
        Article::factory()->count(10)->create(['author_id' => 1]);
    }
  • Ingresamos al archivo database/seeders/UsersTableSeeder.php
    //import Model Article
    use App\Models\User;

     public function run()
    {
         $user = User::create([
            'name' => 'romacode',
            'email' => 'romacode@gmail.com',
            'password' => bcrypt('romacode')
        ]);

        $user->createToken('Romacode')->plainTextToken;

        User::factory()->count(5)->create();
    }
  • Para acabar vamos al archivo database/seeders/DatabaseSeeder.php Y utilizamos los archivos UsersTableSeeder y ArticlesTableSeeder para crear los datos
     public function run()
    {
        $this->call(UsersTableSeeder::class);
        $this->call(ArticlesTableSeeder::class);
    }
  • Para finalizar realizamos la migración para crear los datos
    //"react-hook-form": "^7.34.2",
    php artisan migrate:fresh --seed