Laravel 播种机 class 当我通过 DatabaseSeeder 调用它时未找到
Laravel Seeder class not found when I call it via DatabaseSeeder
我基于 documentation 在 ./database/seeds/GridWithRoverSeeder.php
中名为 class GridWithRoverSeeder
的数据库迁移:
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class GridWithRoverSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('grid')->insert([
'id' => 1,
'width' => 10,
'height' => 10,
]);
DB::table('rover')->insert([
'id' => 1,
'rover_id' => 1,
'command' => "RRMRMMRM",
'last_command'=>""
]);
}
}
我从 DatabaseSeeder
调用它:
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call([
GridWithRoverSeeder::class
]);
}
}
但是当我 运行 php artisan db:seed
我得到以下错误:
ReflectionException : Class GridWithRoverSeeder does not exist
你知道为什么吗?
确保在创建播种器或 laravel 中的任何新 class 之后有 运行 composer dump-autoload
。
我能够重现您的问题,这有助于解决问题。
删除您的种子文件并重新生成它。
php artisan make:seed GridWithRoverSeeder
运行
composer dump-autoload
在 DatabaseSeeder 中调用播种器
$this->call([
GridWithRoverSeeder::class
]);
注:
避免手动重命名文件。
我基于 documentation 在 ./database/seeds/GridWithRoverSeeder.php
中名为 class GridWithRoverSeeder
的数据库迁移:
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class GridWithRoverSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('grid')->insert([
'id' => 1,
'width' => 10,
'height' => 10,
]);
DB::table('rover')->insert([
'id' => 1,
'rover_id' => 1,
'command' => "RRMRMMRM",
'last_command'=>""
]);
}
}
我从 DatabaseSeeder
调用它:
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call([
GridWithRoverSeeder::class
]);
}
}
但是当我 运行 php artisan db:seed
我得到以下错误:
ReflectionException : Class GridWithRoverSeeder does not exist
你知道为什么吗?
确保在创建播种器或 laravel 中的任何新 class 之后有 运行 composer dump-autoload
。
我能够重现您的问题,这有助于解决问题。
删除您的种子文件并重新生成它。
php artisan make:seed GridWithRoverSeeder
运行
composer dump-autoload
在 DatabaseSeeder 中调用播种器
$this->call([
GridWithRoverSeeder::class
]);
注: 避免手动重命名文件。