You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel报错:Call to undefined function Database\Seeders\factory() 求助

解决「Call to undefined function Database\Seeders\factory()」报错

这个报错核心是Laravel 8及以上版本已弃用全局factory()函数,改用模型绑定的工厂写法,以下是针对性解决步骤:

1. 确认Laravel版本

先执行命令查看当前项目版本:

php artisan --version

如果是8.x及以上,必须遵循新的工厂用法规范。

2. 给User模型添加HasFactory trait

打开App\Models\User.php,引入并使用HasFactory trait,这是模型调用工厂的前提:

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use HasFactory; // 必须添加这一行

    // 模型其他代码...
}

3. 修正UserTableSeeder的代码

打开Database\Seeders\UserTableSeeder.php,调整为新版本调用方式,同时确保引入正确命名空间:

namespace Database\Seeders;

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

class UserTableSeeder extends Seeder
{
    public function run()
    {
        // 两种写法二选一即可
        User::factory()->count(10)->create();
        // 或更简洁写法:User::factory(10)->create();
    }
}

4. 检查UserFactory的正确性

打开Database\Factories\UserFactory.php,确保结构符合Laravel 8+规范:

namespace Database\Factories;

use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

class UserFactory extends Factory
{
    protected $model = User::class; // 绑定对应User模型

    public function definition()
    {
        return [
            'username' => $this->faker->name(), // 若用text(10)需确保数据库username字段长度足够
            'email' => $this->faker->unique()->safeEmail(),
            'email_verified_at' => now(),
            'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // 默认密码:password
            'remember_token' => Str::random(10),
        ];
    }
}

5. 执行seed命令并清理缓存

  • 执行指定seeder:
php artisan db:seed --class=UserTableSeeder
  • 若存在缓存问题,先清理再执行:
php artisan optimize:clear
php artisan db:seed --class=UserTableSeeder

内容的提问来源于stack exchange,提问作者user23719376

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 03:37:23