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

时间:2018-04-10 13:51:33

标签: php database laravel factory laravel-seeding

当我运行此命令时,我正在使用faker生成生成虚假条目并在 php artisan db:seed 的帮助下将其插入数据库   它显示错误:

  

播种:TodosTableSeeder

     

Symfony \ Component \ Debug \ Exception \ FatalThrowableError:Class   'APP \ Todo'未找到

     

在   /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-> amount)));         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);
    }
}

4 个答案:

答案 0 :(得分:2)

TodoTableSeeder.php

中的

run方法更改为

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

答案 1 :(得分:0)

您尝试使用APP \ Todo获取Class并且APP \ Todo不存在,因为不正确,正确的表单是 \ APP \待办事项::类

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

我希望这可以帮助你:)。

答案 2 :(得分:0)

use App\Todo;
use Illuminate\Database\Seeder;


class TodosTableSeeder extends Seeder
{

    public function run()
    {
        //factory(APP\Todo::class, 10)->create() ;
      factory(App\Todo::class, 10)->create() ;
    //I changed the APP to App
    }
}

答案 3 :(得分:0)

您需要为待办事项应用制作模型。

在这种情况下,编译器正在寻找App / Todo:意味着它正在寻找App文件夹中的todo.php ...

工匠品牌:待办事项模型

^首先运行此命令..然后,您将在App文件夹中看到Todo.php。 之后,运行您的原始命令。

php artisan db:Seed

希望它能起作用。在laravel 7.0中为我工作。