我在迁移我的数据库之后尝试了一个基本的php工匠db:seed但是它一直在cmd中返回标题错误 - [ReflectionException] Class' UserTableSeeder'不存在
我尝试过的事情
以下是迁移
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function(Blueprint $table)
{
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password', 60);
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('users');
}
}
以下是UserTableSeeder.php
<?php
use App\User;
use Illuminate\Database\Seeder;
class UserTableSeeder extends Seeder {
public function run()
{
DB::table('users')->delete();
User::create(['email' => 'foo@bar.com']);
}
}
以下是DatabaseSeeder.php
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Model::unguard();
$this->call('UserTableSeeder');
}
}
答案 0 :(得分:47)
在数据库/文件夹中创建文件后运行composer dumpautoload
。
<强>为什么吗
检查composer.json
自动加载部分,您会看到“{1}}文件夹已加载”classmap“(source):
database/
作曲家docs将类图描述为:
在安装/更新期间,类映射引用全部组合到 单个键=&gt;值数组,可以在生成的文件中找到 供应商/作曲家/ autoload_classmap.php。 此地图是通过扫描构建的 对于给定目录/文件中所有.php和.inc文件中的类。
您可以使用类映射生成支持来定义自动加载 所有不遵循PSR-0/4的图书馆。要配置你 指定要搜索类的所有目录或文件。
重点补充。每次将文件添加到"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
时,都需要运行composer dumpautoload
命令生成新的类图,否则不会自动加载。
database/
文件夹使用PSR-4标准将完全限定的类名转换为文件系统路径。这就是为什么在那里添加文件后不需要app/
的原因。
答案 1 :(得分:20)
当我们更改或删除Controller文件或其他文件时,应从代码中的所有位置删除其文件。您需要运行命令来刷新作曲家
composer dump-autoload
答案 2 :(得分:12)
尝试更改
$this->call('UserTableSeeder');
到
$this->call(UserTableSeeder::class);
并尝试运行
composer dump-autoload
答案 3 :(得分:2)
有时代码是正确的,但是您需要运行以下命令才能运行seeder命令。 首先运行此命令
composer dumpautoload
然后播种播种机
php artisan db:seed --class=CreateUsersTable
我希望它能起作用
答案 4 :(得分:-1)
在类中添加命名空间。
<?php
namespace Database\Seeders;
...
之后运行 composer dump-autoload