我正在使用faker生成生成虚假条目,并在php artisan db:seed的帮助下将其插入数据库中,当我运行此命令时,它显示错误:
播种:TodosTableSeeder
Symfony \ Component \ Debug \ Exception \ FatalThrowableError:未找到类'APP \ Todo'
at /var/www/html/todos/vendor/laravel/framework/src/Illuminate/Database/Eloquent/FactoryBuilder.php:217 213 | if($ this-> amount <1){214 | return(new $ this-> class) - > newCollection(); 215 | } 216 |
217 | $ instances =(new $ this-> class) - > newCollection(array_map(function()use($ attributes){218 | return $ this-> makeInstance($ attributes); 219 |},range(1,$ this-) >量))); 220 | 221 | $这 - > callAfterMaking($实例);
异常跟踪:
1 Illuminate \ Database \ Eloquent \ FactoryBuilder :: make([])/var/www/html/todos/vendor/laravel/framework/src/Illuminate/Database/Eloquent/FactoryBuilder.php:167
2 Illuminate \ Database \ Eloquent \ FactoryBuilder :: create()/ var / www / html / todos / database / seeds / TodosTableSeeder.php:15
请使用参数-v查看更多详细信息。
这是我的代码UserFactory.php
<?php
use Faker\Generator as Faker;
$factory->define(App\User::class, function (Faker $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
'remember_token' => str_random(10),
];
});
$factory->define(App\Todo::class, function(Faker $faker) {
return[
'todos' => $faker->sentence(10)
];
});
TodosTableSeeder.php
<?php
use App\Todo;
use Illuminate\Database\Seeder;
class TodosTableSeeder extends Seeder
{
public function run()
{
factory(APP\Todo::class, 10)->create() ;
}
}
DatabaseSeeder.php
<?php
use App\Todo;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
public function run()
{
//$this->call(UsersTableSeeder::class);
$this->call(TodosTableSeeder::class);
}
}
在TodoTableSeeder.php
将run
方法改为
public function run()
{
factory(Todo::class, 10)->create();
}
您尝试使用APP \ Todo和APP \ Todo不存在,因为不正确,正确的形式是\ App \ Todo :: class
但是如果你在标题中调用类,当你需要类时,你只需要调用它:class All :: class
我希望这能帮助你:)
我遇到了同样的问题。问题是我改变了我的项目名称,因此无法找到App \ Todo。将项目名称替换为MYTODO / Todo :: class。
TodoTableSeeder.php
public function run()
{
factory(MYTODO\Todo::class, 10)->create();
}
我希望这可以帮助你!