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中被删除了