SeederMakeCommand.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace Illuminate\Database\Console\Seeds;
  3. use Illuminate\Console\GeneratorCommand;
  4. use Illuminate\Support\Str;
  5. use Symfony\Component\Console\Attribute\AsCommand;
  6. #[AsCommand(name: 'make:seeder')]
  7. class SeederMakeCommand extends GeneratorCommand
  8. {
  9. /**
  10. * The console command name.
  11. *
  12. * @var string
  13. */
  14. protected $name = 'make:seeder';
  15. /**
  16. * The console command description.
  17. *
  18. * @var string
  19. */
  20. protected $description = 'Create a new seeder class';
  21. /**
  22. * The type of class being generated.
  23. *
  24. * @var string
  25. */
  26. protected $type = 'Seeder';
  27. /**
  28. * Execute the console command.
  29. *
  30. * @return void
  31. */
  32. public function handle()
  33. {
  34. parent::handle();
  35. }
  36. /**
  37. * Get the stub file for the generator.
  38. *
  39. * @return string
  40. */
  41. protected function getStub()
  42. {
  43. return $this->resolveStubPath('/stubs/seeder.stub');
  44. }
  45. /**
  46. * Resolve the fully-qualified path to the stub.
  47. *
  48. * @param string $stub
  49. * @return string
  50. */
  51. protected function resolveStubPath($stub)
  52. {
  53. return is_file($customPath = $this->laravel->basePath(trim($stub, '/')))
  54. ? $customPath
  55. : __DIR__.$stub;
  56. }
  57. /**
  58. * Get the destination class path.
  59. *
  60. * @param string $name
  61. * @return string
  62. */
  63. protected function getPath($name)
  64. {
  65. $name = str_replace('\\', '/', Str::replaceFirst($this->rootNamespace(), '', $name));
  66. if (is_dir($this->laravel->databasePath().'/seeds')) {
  67. return $this->laravel->databasePath().'/seeds/'.$name.'.php';
  68. }
  69. return $this->laravel->databasePath().'/seeders/'.$name.'.php';
  70. }
  71. /**
  72. * Get the root namespace for the class.
  73. *
  74. * @return string
  75. */
  76. protected function rootNamespace()
  77. {
  78. return 'Database\Seeders\\';
  79. }
  80. }