Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从子文件夹调用数据库种子程序_Php_Laravel 4 - Fatal编程技术网

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