我正在尝试一个基本的php工匠db:seed迁移我的数据库但它一直在cmd中返回标题错误 - [ReflectionException]类'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');
}
}
Run Code Online (Sandbox Code Playgroud)
以下是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']);
}
}
Run Code Online (Sandbox Code Playgroud)
下面是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');
}
}
Run Code Online (Sandbox Code Playgroud)
Nic*_*ick 69
composer dumpautoload
在数据库/文件夹中创建文件后运行.
为什么?
检查composer.json
自动加载部分,您将看到该database/
文件夹由"classmap"(源)加载:
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
Run Code Online (Sandbox Code Playgroud)
Composer 文档将类映射描述为:
在安装/更新期间,类映射引用全部组合成单个key => value数组,该数组可以在生成的文件vendor/composer/autoload_classmap.php中找到.通过扫描给定目录/文件中的所有.php和.inc文件中的类来构建此映射.
您可以使用类映射生成支持为所有不遵循PSR-0/4的库定义自动加载.要配置它,请指定要搜索类的所有目录或文件.
强调补充说.composer dumpautoload
每次添加文件时都需要运行该命令来生成新的类图database/
,否则它将不会自动加载.
app/
相反,该文件夹使用PSR-4标准将完全限定的类名转换为文件系统路径.这就是您dumpautoload
在那里添加文件后不需要的原因.
Sum*_*pta 23
当我们更改或删除控制器文件或其他文件时,应从代码中的任何地方删除它们的文件。您需要运行命令来刷新您的作曲家
composer dump-autoload
Run Code Online (Sandbox Code Playgroud)
Wou*_*mme 15
尝试改变
$this->call('UserTableSeeder');
Run Code Online (Sandbox Code Playgroud)
至
$this->call(UserTableSeeder::class);
Run Code Online (Sandbox Code Playgroud)
并尝试运行
composer dump-autoload
Run Code Online (Sandbox Code Playgroud)
有时代码是正确的,但是您需要运行以下命令才能运行seeder命令。首先运行此命令
composer dumpautoload
Run Code Online (Sandbox Code Playgroud)
然后播种播种机
php artisan db:seed --class=CreateUsersTable
Run Code Online (Sandbox Code Playgroud)
我希望它能起作用
归档时间: |
|
查看次数: |
25668 次 |
最近记录: |