【问题标题】:Laravel: How to generate seeders in a custom directoryLaravel:如何在自定义目录中生成播种机
【发布时间】:2018-06-22 07:03:40
【问题描述】:

我正在使用 Laravel 5.5 和 laravel-modules v2。

在自定义目录(特别是在模块内部)中生成迁移很容易:

php artisan make:migration create_users_table --path=Modules/User/Database/Migrations

但似乎这对于 seed 类是不可能的:

php artisan make:seeder UsersTableSeeder --path=Modules/User/Database/

“--path”选项不存在。

或传递完整的相对路径:

php artisan make:seeder Modules/User/Database/Migrations/UsersTableSeeder

./database/seeds/

中创建此文件夹结构

或传递完整的绝对路径:

php artisan make:seeder /Modules/User/Database/Migrations/UsersTableSeeder

file_put_contents(\my\file\system\project\database/seeds/C:/Program Files/Git /Modules/User/Database/Seeders/UsersTableSeeder.php): 未能打开 str eam: 没有这样的文件或目录

如何在自定义目录中使用 artisan 命令生成播种机?

【问题讨论】:

标签: php laravel laravel-artisan


【解决方案1】:

您不能,但您可以在执行以下步骤后使用您的自定义代码:

  1. 将文件从 Illuminate/Database/Console/Seeds/SeederMakeCommand.php 复制到您的 文件夹。
  2. 修改 getPath() 函数。
  3. 将此类绑定到容器以覆盖核心。

【讨论】:

    【解决方案2】:

    我在团队中遇到了同样的问题,我们想创建两个文件夹,一个用于真实数据播种器,另一个用于假数据播种器。
    在 DatabaseSeeder 文件中,您可以从另一个路径(命名空间)定义您的类,它会在运行 php artisan db:seed 命令后工作
    在我的例子中,我定义了新的调用:

                $this->call([
                    //real data classes from \database\seeds path
                ]);
    
                $this->call([
                    //fake data from database\seeds\tests path
                    'Database\Seeds\Tests\AuthControllerTestSeeder'
                ]);

    不要忘记在

    中定义你的命名空间(Database\Seeds\Tests\AuthControllerTestSeeder)

    【讨论】:

      【解决方案3】:

      你不能。 GeneratorCommand(由 Seeder 扩展)并不关心文件夹是否存在,因为它只会写入文件。

      /**
       * Get the destination class path.
       *
       * @param  string  $name
       * @return string
       */
      protected function getPath($name)
      {
          return $this->laravel->databasePath().'/seeds/'.$name.'.php';
      }
      

      实现您想要的唯一方法是编写自己的Seeder 命令并允许目录遍历。你可以查看Illuminate\Database\Console\Migrations\MigrateMakeCommand 看看它是如何完成的,这不是很困难。

      【讨论】:

        猜你喜欢
        • 2017-12-08
        • 2023-01-12
        • 2018-03-07
        • 2020-09-22
        • 1970-01-01
        • 1970-01-01
        • 2017-03-06
        • 2018-01-23
        • 2020-07-27
        相关资源
        最近更新 更多