在文件夹中调用 Laravel Seeder
Posted
技术标签:
【中文标题】在文件夹中调用 Laravel Seeder【英文标题】:Calling Laravel Seeder inside folder 【发布时间】:2021-03-20 10:34:44 【问题描述】:我已升级到 Laravel 8,但我在子目录中的自定义播种器无法正常工作。该文件位于database/seeders/tests/TestSeeder.php.
当我运行命令php artisan db:seed --class="TestSeeder"
时,它会返回一条错误消息:
Target class [Database\Seeders\TestSeeder] does not exist.
播种机
<?php
namespace Database\Seeders\Tests;
class TestSeeder extends BaseSeeder
/**
* Run the database seeds.
*
* @return void
*/
public function run()
// codes
composer.json
"autoload":
"psr-4":
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/",
"Database\\Seeders\\Tests\\": "database/seeders/tests/"
,
【问题讨论】:
您将TestSeeder
放入Database\Seeders\Tests
命名空间
还是不行。
试试composer dump-autoload
您的命令中是否需要为 --class='Tests\TestSeeder'?
仍然无法正常工作,顺便说一句,我目前正在将我的 Lumen 5.8 升级到 Lumen 8.x 然后我看到数据库/种子重命名为数据库/种子,这就是我将种子移到数据库/种子文件夹中的原因.
【参考方案1】:
Laravel 假设您正在运行 Database\Seeders\DatabaseSeeder
类的播种机。如果您提供了一个不合格的类名,例如 TestSeeder
,它将假定您的意思是 Database\Seeders\TestSeeder
类。
因此,您应该指定完全限定的类名。
php artisan db:seed --class="Database\\Seeders\\Tests\\TestSeeder"
【讨论】:
谢谢@miken32。我的应用程序出了什么问题。当我运行php artisan make:seeder TestSeeder
它在database/seeds
文件夹中创建?
确保您已正确更新 composer.json
中所有软件包的版本,包括 "laravel/framework": "^8.12"
谢谢 bru,我只需要删除 /database/seeds
文件夹。一切都很好,:)以上是关于在文件夹中调用 Laravel Seeder的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.* 执行seeder命令出现错误的解决方法