Home > Software engineering >  How to fix Call to undefined method App\Models\TableName::factory?
How to fix Call to undefined method App\Models\TableName::factory?

Time:05-06

I have created a seeder that populates data in Laravel but was having a BadMethodCallException Call to undefined method App\Models\Project::factory(). Why is this happening? Below is my seeder code.

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\{
    Project, User
};

class ProjectSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Project::factory()->count(10)->create();

        foreach(Project::all() as $project) {
            $users = User::inRandomOrder()->take(rand(1, 3))->pluck('id');
            $project->users()->attach($users);
        }
    }
}

CodePudding user response:

The right answer is to use HasFactory trait in the Project model.

CodePudding user response:

I've solved it temporarily by using DB facade instead of factory:

use Illuminate\Support\Facades\DB;

DB::table('projects')->insert([
    'name' => Str::random(10),
    'created_at' => now(),
    'updated_at' => now(),
]);

  • Related