File tree Expand file tree Collapse file tree 4 files changed +43
-12
lines changed Expand file tree Collapse file tree 4 files changed +43
-12
lines changed Original file line number Diff line number Diff line change 4949 */
5050abstract class <?= $ model ->getClassName () ?> extends \yii\db\ActiveRecord
5151{
52- <?php if ($ scenarios = $ model ->getScenarios ()):
53- foreach ($ scenarios as $ scenario ): ?>
52+ <?php if ($ scenarios = $ model ->getScenarios ()):
53+ foreach ($ scenarios as $ scenario ): ?>
5454 /**
5555 *<?= $ scenario ['description ' ] ?>
5656
@@ -76,7 +76,7 @@ public static function tableName()
7676 {
7777 return <?= var_export ($ model ->getTableAlias ()) ?> ;
7878 }
79- <?php if ($ scenarios ): ?>
79+ <?php if ($ scenarios ): ?>
8080
8181 /**
8282 * Automatically generated scenarios from the model 'x-scenarios'.
@@ -92,7 +92,7 @@ public function scenarios()
9292 $default = parent::scenarios()[self::SCENARIO_DEFAULT];
9393
9494 return [
95- <?php foreach ($ scenarios as $ scenario ): ?>
95+ <?php foreach ($ scenarios as $ scenario ): ?>
9696 self::<?= $ scenario ['const ' ] ?> => $default,
9797<?php endforeach ; ?>
9898 /**
Original file line number Diff line number Diff line change 1010use cebe \yii2openapi \lib \items \Attribute ;
1111use cebe \yii2openapi \lib \items \DbModel ;
1212use cebe \yii2openapi \lib \items \ValidationRule ;
13- use yii \helpers \VarDumper ;
14- use yii \validators \DateValidator ;
13+ use yii \db \Expression ;
1514use function count ;
1615use function implode ;
1716use function in_array ;
@@ -192,12 +191,11 @@ private function defaultRule(Attribute $attribute):void
192191 if ($ attribute ->defaultValue === null ) {
193192 return ;
194193 }
195- if ($ attribute ->defaultValue instanceof \yii \db \Expression) {
196- return ;
197- }
198194
199195 $ params = [];
200- $ params ['value ' ] = $ attribute ->defaultValue ;
196+ $ params ['value ' ] = ($ attribute ->defaultValue instanceof \yii \db \Expression) ?
197+ $ this ->f ($ attribute ->defaultValue ) :
198+ $ attribute ->defaultValue ;
201199 $ key = $ attribute ->columnName . '_default ' ;
202200 $ this ->rules [$ key ] = new ValidationRule ([$ attribute ->columnName ], 'default ' , $ params );
203201 }
@@ -251,4 +249,14 @@ private function prepareTypeScope():void
251249 $ this ->typeScope ['safe ' ][$ attribute ->columnName ] = $ attribute ->columnName ;
252250 }
253251 }
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+ }
254262}
Original file line number Diff line number Diff line change 1313use yii \base \BaseObject ;
1414use yii \db \ColumnSchema ;
1515use yii \helpers \Inflector ;
16- use yii \helpers \StringHelper ;
1716use yii \helpers \VarDumper ;
1817use function array_filter ;
1918use function array_map ;
@@ -109,7 +108,8 @@ public function getValidationRules():string
109108 $ rules = Yii::createObject (ValidationRulesBuilder::class, [$ this ])->build ();
110109 $ rules = array_map ('strval ' , $ rules );
111110 $ rules = VarDumper::export ($ rules );
112- return str_replace ([
111+
112+ $ rules = str_replace ([
113113 PHP_EOL ,
114114 "\' " ,
115115 "'[[ " ,
@@ -120,6 +120,15 @@ public function getValidationRules():string
120120 '[[ ' ,
121121 '], '
122122 ], $ 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 ;
123132 }
124133
125134 /**
Original file line number Diff line number Diff line change @@ -360,4 +360,18 @@ public function test158BugGiiapiGeneratedRulesEnumWithTrim()
360360 ]);
361361 $ this ->checkFiles ($ actualFiles , $ expectedFiles );
362362 }
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+ // }
363377}
You can’t perform that action at this time.
0 commit comments