Php Laravel,调用未定义的函数Database\Seeders\factory()

Php Laravel,调用未定义的函数Database\Seeders\factory(),php,laravel,laravel-8,Php,Laravel,Laravel 8,我在运行命令时出现标题错误: php artisan db:seed 我的截图: 我不知道这个问题是从哪里来的。我正在搜索代码示例和解决方案,但没有找到任何内容:( ArticlesTableSeeder.php <?php namespace Database\Seeders; use Illuminate\Database\Seeder; // use Laracasts\TestDummy\Factory as TestDummy; class ArticlesTableS

我在运行命令时出现标题错误:

php artisan db:seed
我的截图:

我不知道这个问题是从哪里来的。我正在搜索代码示例和解决方案,但没有找到任何内容:(


ArticlesTableSeeder.php

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
// use Laracasts\TestDummy\Factory as TestDummy;

class ArticlesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        factory(App\Models\Article::class, 30)->create();
    }
}
<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        $this->call(ArticlesTableSeeder::class);
    }
}
<?php

namespace Database\Seeders;

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

class ArticlesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Article::factory()->times(30)->create();
    }
}
尝试更改

factory(App\Models\Article::class, 30)->create();


在laravel 8中,默认路由名称空间被删除

尝试更改:

 'title' => $faker->text(50),
            'body' => $faker->text(200)
ArticlesTableSeeder.php:

 factory(App\Models\Article::class, 30)->create();
protected $model = App\Models\Article::class;
致:

ArticleFactory.php:

 factory(App\Models\Article::class, 30)->create();
protected $model = App\Models\Article::class;
致:

您可能需要改变:

 'title' => $faker->text(50),
            'body' => $faker->text(200)
致:


如果您使用的是laravel版本8,请参阅升级指南。 “Laravel的模型工厂功能已完全重写,以支持类,与Laravel 7.x样式的工厂不兼容。但是,为了简化升级过程,已创建一个新的Laravel/legacy Factorys包,以继续使用现有工厂和Laravel 8.x。您可以通过Composer安装此包:

composer需要laravel/legacy工厂”


ArticlesTableSeeder.php

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
// use Laracasts\TestDummy\Factory as TestDummy;

class ArticlesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        factory(App\Models\Article::class, 30)->create();
    }
}
<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        $this->call(ArticlesTableSeeder::class);
    }
}
<?php

namespace Database\Seeders;

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

class ArticlesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Article::factory()->times(30)->create();
    }
}

这里提到的所有建议都是正确的。
但是,如果使用的是laravel 8,则必须运行
composer require laravel/legacy factories
,才能运行代码。 如果您收到一个错误,表明未找到
Class'Database\Factories\ArticleFactory'
然后确保您有
类ArticleFactory扩展工厂
而不是ModalFactory。
确保在本文模型中使用HasFactory

<?php

namespace App\Models;

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

class Article extends Model
{
    use HasFactory;
}


你不再使用
工厂
助手函数了,这看起来……你应该查看有关如何调用这些工厂的文档。谢谢,这真的很清楚。兄弟:你应该提到,助手方法
工厂()
在Laravel 8中被删除了