{"record":{"id":"c691b1412d73f6c3","repo":"laravel/framework","slug":"method-run-missing-from-get-class-this","errorCode":null,"errorMessage":"Method [run] missing from '.get_class($this)","messagePattern":"Method \\[run\\] missing from '\\.get_class\\(\\$this\\)","errorType":"exception","errorClass":"InvalidArgumentException","httpStatus":null,"severity":"error","filePath":"src/Illuminate/Database/Seeder.php","lineNumber":180,"sourceCode":"    public function setCommand(Command $command)\n    {\n        $this->command = $command;\n\n        return $this;\n    }\n\n    /**\n     * Run the database seeds.\n     *\n     * @param  array  $parameters\n     * @return mixed\n     *\n     * @throws \\InvalidArgumentException\n     */\n    public function __invoke(array $parameters = [])\n    {\n        if (! method_exists($this, 'run')) {\n            throw new InvalidArgumentException('Method [run] missing from '.get_class($this));\n        }\n\n        $callback = fn () => isset($this->container)\n            ? $this->container->call([$this, 'run'], $parameters)\n            : $this->run(...$parameters);\n\n        if (isset(class_uses_recursive(static::class)[WithoutModelEvents::class])) {\n            $callback = $this->withoutModelEvents($callback);\n        }\n\n        return $callback();\n    }\n}\n","sourceCodeStart":162,"sourceCodeEnd":194,"githubUrl":"https://github.com/laravel/framework/blob/e0f6eb3518ac29fbbca8529e97d0df7fc9f24481/src/Illuminate/Database/Seeder.php#L162-L194","documentation":"Seeder::__invoke (the entry point invoked by the db:seed command and DatabaseSeeder) checks method_exists($this, 'run') and throws InvalidArgumentException if the seeder class does not define a run() method. Every concrete seeder must implement run(); anonymous/abstract seeders or stubs that omit it fail at invocation time.","triggerScenarios":"Registering a class in DatabaseSeeder::$callers (or passing --class=Foo) where Foo extends Seeder but does not declare a run() method; instantiating and invoking a seeder class that only has internal helper methods.","commonSituations":"Naming the seeder method something other than run() (e.g. seed(), execute()); abstract base seeder accidentally added to the call list; copy-paste from a generator that left the run() body as a TODO without the method signature; class renamed but method signature not updated.","solutions":["Add a public function run(): void to the seeder class.","If the seeder is a base/abstract class meant only to be extended, do not register it in DatabaseSeeder::run() / --class.","Make sure the --class argument names a concrete, runnable seeder."],"exampleFix":"// before\nclass OrdersSeeder extends \\Illuminate\\Database\\Seeder\n{\n    public function seed()\n    {\n        // ...\n    }\n}\n\n// after\nclass OrdersSeeder extends \\Illuminate\\Database\\Seeder\n{\n    public function run(): void\n    {\n        // ...\n    }\n}","handlingStrategy":"type-guard","validationCode":"if (! method_exists($seederInstance, 'run')) {\n    throw new \\InvalidArgumentException(get_class($seederInstance).' must implement run().');\n}\n$seederInstance(...);","typeGuard":"function isValidSeeder(object|string $seeder): bool\n{\n    return method_exists(is_string($seeder) ? $seeder : $seeder, 'run');\n}","tryCatchPattern":null,"preventionTips":["Always declare public function run(): void on concrete seeders.","Do not register abstract base seeders in DatabaseSeeder::run().","Use a static analyzer (PHPStan) with a rule requiring run() on Seeder subclasses."],"tags":["database","seeding","seeder","artisan","configuration"],"backgroundTag":null,"analyzedSha":"e0f6eb3518ac29fbbca8529e97d0df7fc9f24481","analyzedAt":"2026-08-11T20:52:37.562Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}