File tree 4 files changed +43
-12
lines changed
4 files changed +43
-12
lines changed Original file line number Diff line number Diff line change 49
49
*/
50
50
abstract class <?= $ model ->getClassName () ?> extends \yii\db\ActiveRecord
51
51
{
52
- <?php if ($ scenarios = $ model ->getScenarios ()):
53
- foreach ($ scenarios as $ scenario ): ?>
52
+ <?php if ($ scenarios = $ model ->getScenarios ()):
53
+ foreach ($ scenarios as $ scenario ): ?>
54
54
/**
55
55
*<?= $ scenario ['description ' ] ?>
56
56
@@ -76,7 +76,7 @@ public static function tableName()
76
76
{
77
77
return <?= var_export ($ model ->getTableAlias ()) ?> ;
78
78
}
79
- <?php if ($ scenarios ): ?>
79
+ <?php if ($ scenarios ): ?>
80
80
81
81
/**
82
82
* Automatically generated scenarios from the model 'x-scenarios'.
@@ -92,7 +92,7 @@ public function scenarios()
92
92
$default = parent::scenarios()[self::SCENARIO_DEFAULT];
93
93
94
94
return [
95
- <?php foreach ($ scenarios as $ scenario ): ?>
95
+ <?php foreach ($ scenarios as $ scenario ): ?>
96
96
self::<?= $ scenario ['const ' ] ?> => $default,
97
97
<?php endforeach ; ?>
98
98
/**
Original file line number Diff line number Diff line change 10
10
use cebe \yii2openapi \lib \items \Attribute ;
11
11
use cebe \yii2openapi \lib \items \DbModel ;
12
12
use cebe \yii2openapi \lib \items \ValidationRule ;
13
- use yii \helpers \VarDumper ;
14
- use yii \validators \DateValidator ;
13
+ use yii \db \Expression ;
15
14
use function count ;
16
15
use function implode ;
17
16
use function in_array ;
@@ -192,12 +191,11 @@ private function defaultRule(Attribute $attribute):void
192
191
if ($ attribute ->defaultValue === null ) {
193
192
return ;
194
193
}
195
- if ($ attribute ->defaultValue instanceof \yii \db \Expression) {
196
- return ;
197
- }
198
194
199
195
$ params = [];
200
- $ params ['value ' ] = $ attribute ->defaultValue ;
196
+ $ params ['value ' ] = ($ attribute ->defaultValue instanceof \yii \db \Expression) ?
197
+ $ this ->f ($ attribute ->defaultValue ) :
198
+ $ attribute ->defaultValue ;
201
199
$ key = $ attribute ->columnName . '_default ' ;
202
200
$ this ->rules [$ key ] = new ValidationRule ([$ attribute ->columnName ], 'default ' , $ params );
203
201
}
@@ -251,4 +249,14 @@ private function prepareTypeScope():void
251
249
$ this ->typeScope ['safe ' ][$ attribute ->columnName ] = $ attribute ->columnName ;
252
250
}
253
251
}
252
+
253
+ private function f ($ dbExpr ) // TODO rename
254
+ {
255
+ return new class ($ dbExpr ->expression ) extends Expression {
256
+ public function __toString ()
257
+ {
258
+ return '-yii-db-expression-starts-(" ' . $ this ->expression . '")-yii-db-expression-ends- ' ;
259
+ }
260
+ };
261
+ }
254
262
}
Original file line number Diff line number Diff line change 13
13
use yii \base \BaseObject ;
14
14
use yii \db \ColumnSchema ;
15
15
use yii \helpers \Inflector ;
16
- use yii \helpers \StringHelper ;
17
16
use yii \helpers \VarDumper ;
18
17
use function array_filter ;
19
18
use function array_map ;
@@ -109,7 +108,8 @@ public function getValidationRules():string
109
108
$ rules = Yii::createObject (ValidationRulesBuilder::class, [$ this ])->build ();
110
109
$ rules = array_map ('strval ' , $ rules );
111
110
$ rules = VarDumper::export ($ rules );
112
- return str_replace ([
111
+
112
+ $ rules = str_replace ([
113
113
PHP_EOL ,
114
114
"\' " ,
115
115
"'[[ " ,
@@ -120,6 +120,15 @@ public function getValidationRules():string
120
120
'[[ ' ,
121
121
'], '
122
122
], $ rules );
123
+
124
+ $ rules = str_replace (
125
+ ["'value' => '-yii-db-expression-starts- " , "-yii-db-expression-ends-' " ],
126
+ ["'value' => new \yii\db\Expression " , "" ],
127
+ $ rules ,
128
+ $ count
129
+ );
130
+
131
+ return $ rules ;
123
132
}
124
133
125
134
/**
Original file line number Diff line number Diff line change @@ -360,4 +360,18 @@ public function test158BugGiiapiGeneratedRulesEnumWithTrim()
360
360
]);
361
361
$ this ->checkFiles ($ actualFiles , $ expectedFiles );
362
362
}
363
+
364
+ // https://github.com/php-openapi/yii2-openapi/issues/65
365
+ // public function test65DefaultValueByConstantAndExpressionInCrudModelsFakerEtc()
366
+ // {
367
+ // $testFile = Yii::getAlias("@specs/issue_fix/65_default_value_by_constant_and_expression_in_crud_models_faker_etc/index.php");
368
+ // $this->runGenerator($testFile);
369
+ // $actualFiles = FileHelper::findFiles(Yii::getAlias('@app'), [
370
+ // 'recursive' => true,
371
+ // ]);
372
+ // $expectedFiles = FileHelper::findFiles(Yii::getAlias("@specs/issue_fix/65_default_value_by_constant_and_expression_in_crud_models_faker_etc/mysql"), [
373
+ // 'recursive' => true,
374
+ // ]);
375
+ // // $this->checkFiles($actualFiles, $expectedFiles); // TODO
376
+ // }
363
377
}
You can’t perform that action at this time.
0 commit comments