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