我正在使用Laravel 5.5和laravel-modules v2。
在自定义目录中(特别是在模块内)生成迁移很容易:
php artisan make:migration create_users_table --path=Modules/User/Database/Migrations
但似乎播种类无法做到这一点:
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命令生成播种机?
答案 0 :(得分:1)
你做不到。 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
以查看它是如何完成的,这并不是很困难。
答案 1 :(得分:0)
在我们的团队中,我遇到了同样的问题bcs,我们想创建两个文件夹,一个用于真实数据播种者,另一个用于伪造数据播种者。
在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)答案 2 :(得分:0)
您不能执行以下操作,但是可以使用自定义代码来完成此操作:
- 将文件从Illuminate / Database / Console / Seeds / SeederMakeCommand.php复制到您的 文件夹。
- 修改getPath()函数。
- 将此类绑定到容器以覆盖核心。