3
3
namespace console \commands ;
4
4
5
5
use Yii ;
6
+ use yii \base \ExitException ;
6
7
use yii \base \Model ;
7
8
use yii \console \Controller ;
8
9
use yii \console \ExitCode ;
15
16
*/
16
17
class FakerController extends Controller
17
18
{
19
+ /**
20
+ * @throws ExitException when not in debug mode.
21
+ */
22
+ public function beforeAction ($ action )
23
+ {
24
+ if (!YII_DEBUG ) {
25
+ $ this ->stdout ('Faker command can only be used in development environment! ' . PHP_EOL , Console::BOLD , Console::FG_RED );
26
+ throw new ExitException (ExitCode::UNSPECIFIED_ERROR );
27
+ }
28
+ return parent ::beforeAction ($ action );
29
+ }
30
+
18
31
/**
19
32
* Fill tables with fake data
20
33
*/
21
34
public function actionIndex ()
22
35
{
23
- $ fakers = FileHelper::findFiles (\Yii::getAlias ('@common/models ' ), [
24
- 'only ' => ['*Faker.php ' ],
25
- 'except ' => ['BaseModelFaker.php ' ],
26
- ]);
27
-
28
- $ sortedFakersModels = static ::sortModels ($ fakers , '\\common \\models \\faker \\' );
29
-
30
- foreach ($ sortedFakersModels as $ justModelClassName ) {
31
- $ className = 'common \\models \\faker \\' . StringHelper::basename ($ justModelClassName , '.php ' ).'Faker ' ;
32
- $ this ->stdout ('Generating fake data for ' . StringHelper::basename ($ justModelClassName , 'Faker.php ' ) . '... ' );
36
+ $ fakerModels = $ this ->getFakersModels ();
37
+ foreach ($ fakerModels as $ modelClassName ) {
38
+ $ className = 'common \\models \\faker \\' . StringHelper::basename ($ modelClassName , '.php ' ).'Faker ' ;
39
+ $ this ->stdout ('Generating fake data for ' . StringHelper::basename ($ modelClassName , 'Faker.php ' ) . '... ' );
33
40
$ faker = new $ className ;
34
41
for ($ i = 0 ; $ i < 10 ; $ i ++) {
35
42
$ model = $ faker ->generateModel ();
@@ -51,18 +58,13 @@ public function actionClear($requireConfirm = true): int
51
58
return ExitCode::OK ;
52
59
}
53
60
54
- $ fakers = FileHelper::findFiles (\Yii::getAlias ('@common/models ' ), [
55
- 'only ' => ['*Faker.php ' ],
56
- 'except ' => ['BaseModelFaker.php ' ],
57
- ]);
58
-
59
- $ sortedFakersModels = static ::sortModels ($ fakers , '\\common \\models \\faker \\' );
61
+ $ sortedFakersModels = $ this ->getFakersModels ();
60
62
$ sortedFakersModels_DESC = array_reverse ($ sortedFakersModels );
61
- foreach ($ sortedFakersModels_DESC as $ modelName ) {
63
+ foreach ($ sortedFakersModels_DESC as $ modelClassName ) {
62
64
/** @var Model $modelClass */
63
- $ modelClass = 'common \\models \\base \\' .$ modelName ;
65
+ $ modelClass = 'common \\models \\base \\' .$ modelClassName ;
64
66
Yii::$ app ->db ->createCommand ()->delete ($ modelClass ::tableName ())->execute ();
65
- $ this ->stdout ("Data from $ modelName was deleted \n" );
67
+ $ this ->stdout ("Data from $ modelClassName was deleted \n" );
66
68
}
67
69
return ExitCode::OK ;
68
70
}
@@ -146,4 +148,18 @@ public static function moveModel(&$sortedDependentModels, $dependentOn, $model)
146
148
147
149
$ sortedDependentModels = array_merge ($ restLeft , [$ dependentOn ], $ restRight );
148
150
}
151
+
152
+ /**
153
+ * @return int[]|string[]
154
+ */
155
+ private function getFakersModels (): array
156
+ {
157
+ $ fakers = FileHelper::findFiles (\Yii::getAlias ('@common/models ' ), [
158
+ 'only ' => ['*Faker.php ' ],
159
+ 'except ' => ['BaseModelFaker.php ' ],
160
+ ]);
161
+
162
+ $ sortedFakersModels = static ::sortModels ($ fakers , '\\common \\models \\faker \\' );
163
+ return $ sortedFakersModels ;
164
+ }
149
165
}
0 commit comments