miyazato4869
@miyazato4869 (宮里 明斗)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Laravel 8 シーダーとファクトリーでテストデータ用意したい

解決したいこと

シーダーとファクトリーでテストデータ用意したいです。
(Laravel 8.33.1)

しかし下記のようなエラーが出てしまいます。
どなたか分かる方がいましたら、教えていただきたいです。

宜しくお願い致します。

発生している問題・エラー

Seeding: Database\Seeders\BlogsTableSeeder

   Symfony\Component\ErrorHandler\Error\FatalError 

  Trait 'App\Models\HasFactory' not found

  at app/Models/Blog.php:9
      5▕ use Illuminate\Database\Eloquent\Model;
      6▕ 
      7▕ class Blog extends Model
      8▕ {
  ➜   9▕     use HasFactory;
     10▕     // テーブル名
     11▕     protected $table = 'blogs';
     12▕ 
     13▕     // 可変項目


   Whoops\Exception\ErrorException 

  Trait 'App\Models\HasFactory' not found

  at app/Models/Blog.php:9
      5▕ use Illuminate\Database\Eloquent\Model;
      6▕ 
      7▕ class Blog extends Model
      8▕ {
  ➜   9▕     use HasFactory;
     10▕     // テーブル名
     11▕     protected $table = 'blogs';
     12▕ 
     13▕     // 可変項目

      +1 vendor frames 
  2   [internal]:0
      Whoops\Run::handleShutdown()
miyasatoakiratonoMacBook-puro:blog miyazatoakito$ php artisan --version
Laravel Framework 8.33.1

blog/database/seeders/BlogTableSeeder.php

<?php
namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\Blog;

class BlogsTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        \App\Models\Blog::factory()->count(15)->create();
    }
}

blog/database/BlogFactory.php

<?php

namespace Database\Factories;

use App\Models\Blog;
use Illuminate\Database\Eloquent\Factories\Factory;

class BlogFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = \App\Models\Blog::class;

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'title' => $this->faker->word,
            'content' => $this->faker->realText
        ];
    }
}

blog/database/seeders/DatabaseSeeder.php

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

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

自分で試したこと

https://qiita.com/hirotototototo/items/689947637042cf5c3284
の記事を見てそっくりそのままやったので、何が間違っているのかさっぱりわからないです。
php composer autoloadなどもやってみたのですが、何も変わりませんでした。

1

1Answer

一度、app/Models/Blog.phpの6行目に、以下を追加してみてください。

use Illuminate\Database\Eloquent\Factories\HasFactory;
1Like

Your answer might help someone💌