tixyu10
@tixyu10

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 シーダーとファクトリーでテストデータ用意したい

解決したいこと

php artisan db:seedを実行すると下記のエラーが出ます。
(Laravel Framework 8.34.0)

どなたか分かる方がいましたら、教えていただきたいです。
宜しくお願い致します。

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

   Error 

  Class 'Database\Factories\TodoFactory' not found

  at C:\xampp\htdocs\todos\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Factories\Factory.php:683
    679▕     public static function factoryForModel(string $modelName)
    680▕     {
    681▕         $factory = static::resolveFactoryName($modelName);
    682▕
  ➜ 683▕         return $factory::new();
    684▕     }
    685▕
    686▕     /**
    687▕      * Specify the callback that should be invoked to guess factory names based on dynamic relationship names.

  1   C:\xampp\htdocs\todos\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Factories\HasFactory.php:15
      Illuminate\Database\Eloquent\Factories\Factory::factoryForModel()

  2   C:\xampp\htdocs\todos\database\seeders\TodosTableSeeder.php:17
      App\Models\Todo::factory()
PS C:\xampp\htdocs\todos> 

該当するソースコード(Modelsファイル)

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Todo extends Model{

    use HasFactory;

    //テーブル名    
    protected $table = 'todos';

    //可変項目
    protected $fillable =[
        'content'
    ];
}

該当するソースコード(factoriesファイル)

<?php

namespace Database\Factories;

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

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

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

該当するソースコード(seedersファイル)

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        // \App\Models\User::factory(10)->create();
        $this->call(TodosTableSeeder::class);
    }
}

該当するソースコード(seedersファイル)

<?php

namespace Database\Seeders;

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

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

自分で試したこと

composer dump-autoload コマンドを実行してもエラーが出ます。

0

1Answer

Class 'Database\Factories\TodoFactory' not found

クラスDatabase\Factories\TodoFactoryが見つからない、というエラーです。

namespace Database\Factories;
class TodoFactorFactory extends Factory
{
}

タイプミスではないでしょうか?
TodoFactorFactory => TodoFactory

0Like

Comments

  1. @tixyu10

    Questioner

    ご指摘の通りでした!
    ターミナルで以下コマンドを打って、TodoFactory.php を作る段階でタイプミスしてたみたいです。
    一回削除して作り直したらいけました。
    ご回答ありがとうございました。

Your answer might help someone💌