Php 从子文件夹调用数据库种子程序
我想创建一组数据库种子类,专门用于为我正在编写的测试用例添加数据 我的计划是将它们放在文件夹中:Php 从子文件夹调用数据库种子程序,php,laravel-4,Php,Laravel 4,我想创建一组数据库种子类,专门用于为我正在编写的测试用例添加数据 我的计划是将它们放在文件夹中: app/database/seeds/testData/ 然后通过以下命令调用播种机: php artisan db:seed --class="testData/myTestSeeder" 但我得到一个“类不存在”错误 是否可以调用位于seeds子文件夹中的数据库种子程序?我在文档中没有看到明确的“是”,但也没有看到明确的“否” 您需要告诉自动加载程序如何加载新类。这比较简单,;将以下内容添加
app/database/seeds/testData/
然后通过以下命令调用播种机:
php artisan db:seed --class="testData/myTestSeeder"
但我得到一个“类不存在”错误
是否可以调用位于seeds子文件夹中的数据库种子程序?我在文档中没有看到明确的“是”,但也没有看到明确的“否” 您需要告诉自动加载程序如何加载新类。这比较简单,;将以下内容添加到
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
]
},
“自动加载”:{
“类映射”:[
“应用程序/命令”,
“应用程序/控制器”,
“应用程序/模型”,
“应用程序/数据库/迁移”,
“应用程序/数据库/种子”,
“app/tests/TestCase.php”,
“app/database/seeds/testData”//您不需要在项目上编辑classmap
,只需确保运行
composer dump-autoload
将类移动到子文件夹后
完成后,运行这个(这里不需要提到testData)
创建新的播种器类时,例如:
php artisan make:seeder Authorization/CreateAppRoleSeeder
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call(CreateAppRoleSeeder::class);
}
}
因此,获取新类:
<?php
use Illuminate\Database\Seeder;
class Authorization/CreateAppRoleSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//
}
}
将类添加到文件“database\Seeder\DatabaseSeeder”后
就我而言,例如:
php artisan make:seeder Authorization/CreateAppRoleSeeder
<?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 --class=CreateAppRoleSeeder
因此将起作用;)子文件夹中的种子类是否不是从classmap“app/database/seeds”自动加载的?我现在尝试一下你的方法,我只是好奇,因为我还在学习composer及其工作原理。不。另一个解决方案是向种子添加名称空间,然后在“psr-0”中向auotloader注册它在自动加载
属性下方的键自动加载的转储和删除子文件夹名称对我有效,无需修改我的composer.json
文件。感谢您的帮助!
php artisan db:seed --class=CreateAppRoleSeeder