Laravel:如何在自定义目录中生成播种机

Ale*_*ldi 5 php laravel laravel-artisan

我将 Laravel 5.5 与laravel-modules v2 一起使用。

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

php artisan make:migration create_users_table --path=Modules/User/Database/Migrations
Run Code Online (Sandbox Code Playgroud)

但似乎这对于播种课程是不可能的:

php artisan make:seeder UsersTableSeeder --path=Modules/User/Database/
Run Code Online (Sandbox Code Playgroud)

“--path”选项不存在。

或传递完整的相对路径:

php artisan make:seeder Modules/User/Database/Migrations/UsersTableSeeder
Run Code Online (Sandbox Code Playgroud)

./database/seeds/ 中创建这个完全相同的文件夹结构

或传递完整的绝对路径:

php artisan make:seeder /Modules/User/Database/Migrations/UsersTableSeeder
Run Code Online (Sandbox Code Playgroud)

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

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

Ohg*_*why 2

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

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

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