我在不同的文件夹中有数据库播种器。当我写db:seed时,控制台显示以下错误:
[ReflectionException] Class DatabaseSeeder does not exist , Laravel Seeder
一类是这样的:
namespace Database\Seeds;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use TiposCompromisosTableSeeder;
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Eloquent::unguard();
$this->call('TiposCompromisosTableSeeder');
}
}
我的另一堂课是
namespace Database\Seeds;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class TiposCompromisosTableSeeder extends Seeder{
public function run(){
DB::table('tipos')->insert(array(
'nombre' => 'prioridad',
'tabla' => 'compromisos',
'str1' => 'baja',
'int1' => 1
));
}
}
我试图使用
composer dump-autoupload
但不起作用。
正如您所看到的,我在同一名称空间中都有两个clases。
请帮助。
答案 0 :(得分:6)
如果您最近升级了Laravel版本,请检查您的composer.json
您的“自动加载”部分应该类似于下面的代码段
注意:您可能必须在“classmap”
下添加“database”条目"autoload": {
"classmap": [
"app/Library",
"app/Models",
"database"
],
"psr-4": {
"App\\": "app/"
},
"files": [
"app/Library/helpers.php"
]
},
然后,您应该运行composer dumpautoload
并尝试php artisan db:seed
答案 1 :(得分:2)
将它全部放在DatabaseSeeder.php文件中,如下所示:
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Eloquent::unguard();
$this->call('TiposCompromisosTableSeeder');
}
}
class TiposCompromisosTableSeeder extends Seeder{
public function run(){
DB::table('tipos')->insert(array(
'nombre' => 'prioridad',
'tabla' => 'compromisos',
'str1' => 'baja',
'int1' => 1
));
}
}
答案 2 :(得分:1)
删除两个类中的命名空间定义,并使用" composer dump-autoload"。
然后它会正常工作。
答案 3 :(得分:0)
解决:添加
namespace database \ seeds;
然后运行命令:
composer dump-autoload --no-dev
答案 4 :(得分:0)
您应该将此行添加到 getResponse
内的 composer.json
文件中:
"psr-4"
这意味着应该是这样的:
"Database\\Seeders\\": "database/seeders/"
答案 5 :(得分:-1)