Laravel 5.6 db:seed 抛出 FatalThrowableError:找不到类 'APP\Todo'
Posted
技术标签:
【中文标题】Laravel 5.6 db:seed 抛出 FatalThrowableError:找不到类 \'APP\\Todo\'【英文标题】:Laravel 5.6 db:seed throws FatalThrowableError : Class 'APP\Todo' not foundLaravel 5.6 db:seed 抛出 FatalThrowableError:找不到类 'APP\Todo' 【发布时间】:2018-09-20 04:18:31 【问题描述】:当我运行此命令时,我正在使用 faker generate 生成虚假条目并将其插入数据库中,并借助 php artisan db:seed 它显示一个错误:
播种:TodosTableSeeder
Symfony\Component\Debug\Exception\FatalThrowableError : 类 'APP\Todo' 未找到
在 /var/www/html/todos/vendor/laravel/framework/src/Illuminate/Database/Eloquent/FactoryBuilder.php:217 213| if ($this->amount class)->newCollection(); 215| 216|
217| $instances = (new $this->class)->newCollection(array_map(function () use ($attributes) 218|返回 $this->makeInstance($attributes); 219| , range(1, $this->amount))); 220| 221| $this->callAfterMaking($instances);
异常跟踪:
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);
【问题讨论】:
改用factory(App\Todo::class, 10)->create() ;
。大小写很重要。
我在 TodosTableSeeder 中使用过它。您所说的大写重要是什么意思?
含义APP
与App
不同
【参考方案1】:
你需要为你的 todos 应用创建一个模型。
在这种情况下,编译器正在寻找 App/Todo: 意味着它正在 App 文件夹中寻找 todo.php...
工匠制作:模型 Todo
^首先运行这个命令.. 然后你会在你的 App 文件夹中看到一个 Todo.php。 之后运行你原来的命令。
php artisan db:Seed
希望它有效。在 laravel 7.0 中为我工作。
【讨论】:
【参考方案2】: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
【讨论】:
这已经在 cmets 和两个答案中得到了回答。您至少应该强调为什么您更改了某些内容,以便其他人可以从您的答案中学习【参考方案3】:我遇到了同样的问题。 问题是我更改了项目名称,因此找不到 App\Todo。 将 App 替换为您的项目名称为 MYTODO/Todo::class。
TodoTableSeeder.php
public function run()
factory(MYTODO\Todo::class, 10)->create();
希望对你有帮助!
【讨论】:
【参考方案4】:您尝试使用 APP\Todo 和 APP\Todo 获取 Class,因为不存在是正确的,正确的形式是 \App\Todo::class
但是如果你在头部调用类,当你需要这个类时你只需要这样调用它:class All :: class
希望对你有帮助:)
【讨论】:
【参考方案5】:在TodoTableSeeder.php
将run
方法改为
public function run()
factory(Todo::class, 10)->create();
【讨论】:
以上是关于Laravel 5.6 db:seed 抛出 FatalThrowableError:找不到类 'APP\Todo'的主要内容,如果未能解决你的问题,请参考以下文章
Laravel php artisan db:seed 导致“use”语句错误
学习新框架laravel 5.6 (第二天)-DB,控制器及模型使用
拉拉维尔 5.4。调用错误:php artisan db:seed