【发布时间】:2021-02-07 07:36:56
【问题描述】:
我正在尝试使用以下文件“ItemsTableSeeder”和“UsersTableSeeder”为数据库播种,但我不断收到消息:“目标类 [ItemsTableSeeder] 不存在。”当我运行 php artisan db:seed.
这些文件是在命令提示符中添加的,命令为“php artisan make:seeder ItemsTableSeeder”和“php artisan make:seeder UsersTableSeeder”。
这是我的文件结构:
-数据库
-- 工厂
- ItemFactory.php
- UserFactory.php
-- 播种机
- DatabaseSeeder.php
- ItemsTableSeeder.php
- UsersTableSeeder.php
// ItemsTableSeeder.php
<?php
use Illuminate\Database\Seeder;
class ItemsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(\App\Items::class, 20)->create();
}
}
//UsersTableSeeder.php
<?php
use Illuminate\Database\Seeder;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(\App\Users::class, 3)->create();
}
}
DatabaseSeeder.php
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call('ItemsTableSeeder');
$this->call('UsersTableSeeder');
}
}
我尝试在添加两个种子文件后运行“composer dump-autoload”,但在这个阶段这没有任何区别。我也试过清除缓存 'php artisan config:cache'。
这是我的“autoload_classmap.php”的摘录(在运行 composer dump-autoload 之后):
'Cron\\HoursField' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/HoursField.php',
'Cron\\MinutesField' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/MinutesField.php',
'Cron\\MonthField' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/MonthField.php',
'Database\\Factories\\ItemFactory' => $baseDir . '/database/factories/ItemFactory.php',
'Database\\Factories\\UserFactory' => $baseDir . '/database/factories/UserFactory.php',
'DeepCopy\\DeepCopy' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/DeepCopy.php',
'DeepCopy\\Exception\\CloneException' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php',
'DeepCopy\\Exception\\PropertyException' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php',
'DeepCopy\\Filter\\Doctrine\\DoctrineCollectionFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php',
'DeepCopy\\Filter\\Doctrine\\DoctrineEmptyCollectionFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php',
'DeepCopy\\Filter\\Doctrine\\DoctrineProxyFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php',
任何其他尝试的想法将不胜感激,
谢谢,
罗伯特
英国伦敦
【问题讨论】:
-
确保 composer.json 文件的“autoload”键下的“classmap”中存在“database/seeds”
-
如果你运行 php artisan db:seed --class=ItemsTableSeeder 会发生什么?
-
@Flo Espen 我得到了完全相同的信息。是的,类映射文件夹“autoload”中存在数据库/播种机:{“psr-4”:{“App\\”:“app/”,“Database\\Factories\\”:“database/factories/”, "数据库\\播种机\\": "数据库/播种机/" } },
-
这里还有什么想法吗?仍然没有修复。
标签: php mysql laravel laravel-artisan