Skip to content

Commit 2051b96

Browse files
authored
Generate database seed command creation (#11)
1 parent 56ebb92 commit 2051b96

File tree

3 files changed

+64
-2
lines changed

3 files changed

+64
-2
lines changed

README.md

+16-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ The Xeed is to generate new model, seed, database seed, factory and migration fi
99

1010
- [x] Database testing is supported
1111
- [x] Generate models for Laravel
12-
- [ ] Generate seed files for Laravel
13-
- [ ] Generate database seed files for Laravel
12+
- [x] Generate seed files for Laravel
13+
- [x] Generate database seed files for Laravel
1414
- [ ] Generate factories for Laravel
1515
- [ ] Generate migrations for Laravel
1616

@@ -41,6 +41,20 @@ bin/console models
4141
# Generate all models from database in `dist/app/Models` folder
4242
```
4343

44+
### Generate `Seeder`s
45+
46+
```sh
47+
bin/console seeders
48+
# Generate all seeds from database in `dist/database/seeders` folder
49+
```
50+
51+
### Generate `DatabaseSeeder`
52+
53+
```sh
54+
bin/console database
55+
# Generate database seed from database in `dist/database/seeders` folder
56+
```
57+
4458
## How to contribute
4559

4660
### Development

bin/console

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
require __DIR__.'/../vendor/autoload.php';
55

6+
use Cable8mm\Xeed\Command\GenerateDatabaseSeederCommand;
67
use Cable8mm\Xeed\Command\GenerateModelsCommand;
78
use Cable8mm\Xeed\Command\GenerateSeedersCommand;
89
use Symfony\Component\Console\Application;
@@ -13,5 +14,6 @@ $application = new Application();
1314

1415
$application->add(new GenerateModelsCommand());
1516
$application->add(new GenerateSeedersCommand());
17+
$application->add(new GenerateDatabaseSeederCommand());
1618

1719
$application->run();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<?php
2+
3+
namespace Cable8mm\Xeed\Command;
4+
5+
use Cable8mm\Xeed\DB;
6+
use Cable8mm\Xeed\Generators\DatabaseSeederGenerator;
7+
use Cable8mm\Xeed\Support\Inflector;
8+
use Symfony\Component\Console\Attribute\AsCommand;
9+
use Symfony\Component\Console\Command\Command;
10+
use Symfony\Component\Console\Input\InputInterface;
11+
use Symfony\Component\Console\Output\OutputInterface;
12+
13+
#[AsCommand(
14+
name: 'generate-database-seeder',
15+
description: 'Generate seeders. run `bin/console generate-database-seeder`',
16+
hidden: false,
17+
aliases: ['database']
18+
)]
19+
class GenerateDatabaseSeederCommand extends Command
20+
{
21+
protected function configure()
22+
{
23+
$dotenv = \Dotenv\Dotenv::createImmutable(getcwd());
24+
$dotenv->safeLoad();
25+
}
26+
27+
/**
28+
* Generate models.
29+
*
30+
* Run `bin/console generate-seeders` or `bin/console seeders`
31+
*/
32+
protected function execute(InputInterface $input, OutputInterface $output): int
33+
{
34+
$tables = DB::getInstance()->attach()->getTables();
35+
36+
$classes = [];
37+
38+
foreach ($tables as $table) {
39+
$classes[] = Inflector::classify($table->name);
40+
}
41+
42+
DatabaseSeederGenerator::make($classes)->run();
43+
44+
return Command::SUCCESS;
45+
}
46+
}

0 commit comments

Comments
 (0)