我想创建一组专门用于为我正在编写的测试用例添加数据的数据库种子类。
我的计划是把它们放在文件夹里:
app/database/seeds/testData/然后通过以下命令调用播种器:
php artisan db:seed --class="testData/myTestSeeder"但我得到一个“类不存在”的错误。
是否可以调用位于seeds中的子文件夹中的数据库seeders?我没有在文档中看到明确的“是”,但我也没有看到明确的“否”。
发布于 2014-05-29 03:51:08
您不需要在项目中编辑classmap,只需确保运行
composer dump-autoload在将类移动到子文件夹之后。
一旦你这样做了,运行这个(这里不需要提到testData )
php artisan db:seed --class="myTestSeeder"发布于 2014-05-29 03:34:38
你需要告诉自动加载器如何加载你的新类。这相对简单;将以下内容添加到classmap属性中的composer.json:
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php",
"app/database/seeds/testData" // <-- Add this
]
},在此之后,运行composer dump-autoload,您的种子文件现在应该被成功加载。
发布于 2018-10-18 19:51:16
创建新的Seeder类时,例如:
php artisan make:seeder Authorization/CreateAppRoleSeeder因此,获取新的类:
<?php
use Illuminate\Database\Seeder;
class Authorization/CreateAppRoleSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//
}
}您必须用class CreateAppRoleSeeder extends Seeder替换class Authorization/CreateAppRoleSeeder extends Seeder。
接下来,执行dump composer命令:
composer dump在我的例子中,将类添加到文件'database\Seeder\DatabaseSeeder‘之后,例如:
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call(CreateAppRoleSeeder::class);
}
}之后,执行以下命令
php artisan db:seed在我的情况下
php artisan db:seed --class=CreateAppRoleSeeder这样也行得通;)
https://stackoverflow.com/questions/23919825
复制相似问题