Laravel 5.6 db:种子抛出FatalThrowableError:找不到类'APP \ Todo'

问题描述 投票:2回答:3

我正在使用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);
    }
}
php database laravel factory laravel-seeding
3个回答
2
投票

TodoTableSeeder.php

run方法改为

public function run()
{
    factory(Todo::class, 10)->create();
}

0
投票

您尝试使用APP \ Todo和APP \ Todo不存在,因为不正确,正确的形式是\ App \ Todo :: class

但是如果你在标题中调用类,当你需要类时,你只需要调用它:class All :: class

我希望这能帮助你:)


0
投票

我遇到了同样的问题。问题是我改变了我的项目名称,因此无法找到App \ Todo。将项目名称替换为MYTODO / Todo :: class。

TodoTableSeeder.php

public function run()
{
factory(MYTODO\Todo::class, 10)->create();
}

我希望这可以帮助你!

© www.soinside.com 2019 - 2024. All rights reserved.