首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从子文件夹调用数据库种子

从子文件夹调用数据库种子
EN

Stack Overflow用户
提问于 2014-05-29 03:02:52
回答 3查看 11.3K关注 0票数 16

我想创建一组专门用于为我正在编写的测试用例添加数据的数据库种子类。

我的计划是把它们放在文件夹里:

代码语言:javascript
复制
app/database/seeds/testData/

然后通过以下命令调用播种器:

代码语言:javascript
复制
php artisan db:seed --class="testData/myTestSeeder"

但我得到一个“类不存在”的错误。

是否可以调用位于seeds中的子文件夹中的数据库seeders?我没有在文档中看到明确的“是”,但我也没有看到明确的“否”。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-29 03:51:08

您不需要在项目中编辑classmap,只需确保运行

代码语言:javascript
复制
composer dump-autoload

在将类移动到子文件夹之后。

一旦你这样做了,运行这个(这里不需要提到testData )

代码语言:javascript
复制
php artisan db:seed --class="myTestSeeder"
票数 28
EN

Stack Overflow用户

发布于 2014-05-29 03:34:38

你需要告诉自动加载器如何加载你的新类。这相对简单;将以下内容添加到classmap属性中的composer.json:

代码语言:javascript
复制
"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,您的种子文件现在应该被成功加载。

票数 4
EN

Stack Overflow用户

发布于 2018-10-18 19:51:16

创建新的Seeder类时,例如:

代码语言:javascript
复制
php artisan make:seeder Authorization/CreateAppRoleSeeder

因此,获取新的类:

代码语言:javascript
复制
    <?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命令:

代码语言:javascript
复制
composer dump

在我的例子中,将类添加到文件'database\Seeder\DatabaseSeeder‘之后,例如:

代码语言:javascript
复制
    <?php

    use Illuminate\Database\Seeder;

    class DatabaseSeeder extends Seeder
    {
        /**
         * Seed the application's database.
         *
         * @return void
         */
        public function run()
        {
            $this->call(CreateAppRoleSeeder::class);
        }
    }

之后,执行以下命令

代码语言:javascript
复制
php artisan db:seed

在我的情况下

代码语言:javascript
复制
php artisan db:seed --class=CreateAppRoleSeeder

这样也行得通;)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23919825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档