diff --git a/src/generator/default/dbmodel.php b/src/generator/default/dbmodel.php index 17fa4a84..a3d269b6 100644 --- a/src/generator/default/dbmodel.php +++ b/src/generator/default/dbmodel.php @@ -49,8 +49,8 @@ */ abstract class getClassName() ?> extends \yii\db\ActiveRecord { -getScenarios()): -foreach($scenarios as $scenario): ?> +getScenarios()): +foreach ($scenarios as $scenario): ?> /** * @@ -76,7 +76,7 @@ public static function tableName() { return getTableAlias()) ?>; } - + /** * Automatically generated scenarios from the model 'x-scenarios'. @@ -92,7 +92,7 @@ public function scenarios() $default = parent::scenarios()[self::SCENARIO_DEFAULT]; return [ - + self:: => $default, /** diff --git a/src/lib/ValidationRulesBuilder.php b/src/lib/ValidationRulesBuilder.php index 3f3c1398..87337a42 100644 --- a/src/lib/ValidationRulesBuilder.php +++ b/src/lib/ValidationRulesBuilder.php @@ -10,8 +10,7 @@ use cebe\yii2openapi\lib\items\Attribute; use cebe\yii2openapi\lib\items\DbModel; use cebe\yii2openapi\lib\items\ValidationRule; -use yii\helpers\VarDumper; -use yii\validators\DateValidator; +use yii\db\Expression; use function count; use function implode; use function in_array; @@ -192,12 +191,11 @@ private function defaultRule(Attribute $attribute):void if ($attribute->defaultValue === null) { return; } - if ($attribute->defaultValue instanceof \yii\db\Expression) { - return; - } $params = []; - $params['value'] = $attribute->defaultValue; + $params['value'] = ($attribute->defaultValue instanceof \yii\db\Expression) ? + $this->wrapDefaultExpression($attribute->defaultValue) : + $attribute->defaultValue; $key = $attribute->columnName . '_default'; $this->rules[$key] = new ValidationRule([$attribute->columnName], 'default', $params); } @@ -251,4 +249,14 @@ private function prepareTypeScope():void $this->typeScope['safe'][$attribute->columnName] = $attribute->columnName; } } + + private function wrapDefaultExpression(Expression $dbExpr): Expression + { + return new class($dbExpr->expression) extends Expression { + public function __toString() + { + return '-yii-db-expression-starts-("' . $this->expression . '")-yii-db-expression-ends-'; + } + }; + } } diff --git a/src/lib/items/DbModel.php b/src/lib/items/DbModel.php index 5c33c09b..1586637f 100644 --- a/src/lib/items/DbModel.php +++ b/src/lib/items/DbModel.php @@ -13,7 +13,6 @@ use yii\base\BaseObject; use yii\db\ColumnSchema; use yii\helpers\Inflector; -use yii\helpers\StringHelper; use yii\helpers\VarDumper; use function array_filter; use function array_map; @@ -109,7 +108,8 @@ public function getValidationRules():string $rules = Yii::createObject(ValidationRulesBuilder::class, [$this])->build(); $rules = array_map('strval', $rules); $rules = VarDumper::export($rules); - return str_replace([ + + $rules = str_replace([ PHP_EOL, "\'", "'[[", @@ -120,6 +120,15 @@ public function getValidationRules():string '[[', '],' ], $rules); + + // https://github.com/php-openapi/yii2-openapi/issues/65 + $rules = str_replace( + ["'value' => '-yii-db-expression-starts-", "-yii-db-expression-ends-'"], + ["'value' => new \yii\db\Expression", ""], + $rules, + ); + + return $rules; } /** diff --git a/tests/specs/blog/models/base/User.php b/tests/specs/blog/models/base/User.php index c7023d15..a2cff815 100644 --- a/tests/specs/blog/models/base/User.php +++ b/tests/specs/blog/models/base/User.php @@ -41,6 +41,7 @@ public function rules() 'flags_integer' => [['flags'], 'integer'], 'flags_default' => [['flags'], 'default', 'value' => 0], 'created_at_datetime' => [['created_at'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'created_at_default' => [['created_at'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], ]; } } diff --git a/tests/specs/x_db_default_expression/maria/edit/app/models/Fruit.php b/tests/specs/x_db_default_expression/maria/edit/app/models/Fruit.php new file mode 100644 index 00000000..c74c53d9 --- /dev/null +++ b/tests/specs/x_db_default_expression/maria/edit/app/models/Fruit.php @@ -0,0 +1,10 @@ + [['ts', 'ts2', 'ts3', 'ts4', 'ts5', 'ts6', 'd', 'd2', 'd3', 'ts7'], 'trim'], + 'ts_datetime' => [['ts'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts_default' => [['ts'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts2_datetime' => [['ts2'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts2_default' => [['ts2'], 'default', 'value' => '2011-11-11 00:00:00'], + 'ts3_datetime' => [['ts3'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts3_default' => [['ts3'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts4_string' => [['ts4'], 'string'], + 'ts4_default' => [['ts4'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts5_string' => [['ts5'], 'string'], + 'ts5_default' => [['ts5'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts6_string' => [['ts6'], 'string'], + 'ts6_default' => [['ts6'], 'default', 'value' => '2000-11-11 00:00:00'], + 'd_date' => [['d'], 'date', 'format' => 'php:Y-m-d'], + 'd_default' => [['d'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd2_string' => [['d2'], 'string'], + 'd2_default' => [['d2'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd3_string' => [['d3'], 'string'], + 'd3_default' => [['d3'], 'default', 'value' => 'text default'], + 'ts7_date' => [['ts7'], 'date', 'format' => 'php:Y-m-d'], + 'ts7_default' => [['ts7'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + ]; + } +} diff --git a/tests/specs/x_db_default_expression/maria/edit_expression/app/models/Fruit.php b/tests/specs/x_db_default_expression/maria/edit_expression/app/models/Fruit.php new file mode 100644 index 00000000..c74c53d9 --- /dev/null +++ b/tests/specs/x_db_default_expression/maria/edit_expression/app/models/Fruit.php @@ -0,0 +1,10 @@ + [['ts', 'ts2', 'ts3', 'ts4', 'ts5', 'ts6', 'd', 'd2', 'd3', 'ts7'], 'trim'], + 'ts_datetime' => [['ts'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts_default' => [['ts'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts2_datetime' => [['ts2'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts2_default' => [['ts2'], 'default', 'value' => '2011-11-11 00:00:00'], + 'ts3_datetime' => [['ts3'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts3_default' => [['ts3'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts4_string' => [['ts4'], 'string'], + 'ts4_default' => [['ts4'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts5_string' => [['ts5'], 'string'], + 'ts5_default' => [['ts5'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts6_string' => [['ts6'], 'string'], + 'ts6_default' => [['ts6'], 'default', 'value' => '2000-11-11 00:00:00'], + 'd_date' => [['d'], 'date', 'format' => 'php:Y-m-d'], + 'd_default' => [['d'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd2_string' => [['d2'], 'string'], + 'd2_default' => [['d2'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd3_string' => [['d3'], 'string'], + 'd3_default' => [['d3'], 'default', 'value' => 'text default'], + 'ts7_date' => [['ts7'], 'date', 'format' => 'php:Y-m-d'], + 'ts7_default' => [['ts7'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + ]; + } +} diff --git a/tests/specs/x_db_default_expression/maria/simple/app/models/Fruit.php b/tests/specs/x_db_default_expression/maria/simple/app/models/Fruit.php new file mode 100644 index 00000000..c74c53d9 --- /dev/null +++ b/tests/specs/x_db_default_expression/maria/simple/app/models/Fruit.php @@ -0,0 +1,10 @@ + [['ts', 'ts2', 'ts3', 'ts4', 'ts5', 'ts6', 'd', 'd2', 'd3', 'ts7'], 'trim'], + 'ts_datetime' => [['ts'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts_default' => [['ts'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts2_datetime' => [['ts2'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts2_default' => [['ts2'], 'default', 'value' => '2011-11-11 00:00:00'], + 'ts3_datetime' => [['ts3'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts3_default' => [['ts3'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts4_string' => [['ts4'], 'string'], + 'ts4_default' => [['ts4'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts5_string' => [['ts5'], 'string'], + 'ts5_default' => [['ts5'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts6_string' => [['ts6'], 'string'], + 'ts6_default' => [['ts6'], 'default', 'value' => '2000-11-11 00:00:00'], + 'd_date' => [['d'], 'date', 'format' => 'php:Y-m-d'], + 'd_default' => [['d'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd2_string' => [['d2'], 'string'], + 'd2_default' => [['d2'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd3_string' => [['d3'], 'string'], + 'd3_default' => [['d3'], 'default', 'value' => 'text default'], + 'ts7_date' => [['ts7'], 'date', 'format' => 'php:Y-m-d'], + 'ts7_default' => [['ts7'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + ]; + } +} diff --git a/tests/specs/x_db_default_expression/mysql/edit/app/models/Fruit.php b/tests/specs/x_db_default_expression/mysql/edit/app/models/Fruit.php new file mode 100644 index 00000000..c74c53d9 --- /dev/null +++ b/tests/specs/x_db_default_expression/mysql/edit/app/models/Fruit.php @@ -0,0 +1,10 @@ + [['ts', 'ts2', 'ts3', 'ts4', 'ts5', 'ts6', 'd', 'd2', 'd3', 'ts7'], 'trim'], + 'ts_datetime' => [['ts'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts_default' => [['ts'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts2_datetime' => [['ts2'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts2_default' => [['ts2'], 'default', 'value' => '2011-11-11 00:00:00'], + 'ts3_datetime' => [['ts3'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts3_default' => [['ts3'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts4_string' => [['ts4'], 'string'], + 'ts4_default' => [['ts4'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts5_string' => [['ts5'], 'string'], + 'ts5_default' => [['ts5'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts6_string' => [['ts6'], 'string'], + 'ts6_default' => [['ts6'], 'default', 'value' => '2000-11-11 00:00:00'], + 'd_date' => [['d'], 'date', 'format' => 'php:Y-m-d'], + 'd_default' => [['d'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd2_string' => [['d2'], 'string'], + 'd2_default' => [['d2'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd3_string' => [['d3'], 'string'], + 'd3_default' => [['d3'], 'default', 'value' => 'text default'], + 'ts7_date' => [['ts7'], 'date', 'format' => 'php:Y-m-d'], + 'ts7_default' => [['ts7'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + ]; + } +} diff --git a/tests/specs/x_db_default_expression/mysql/edit_expression/app/models/Fruit.php b/tests/specs/x_db_default_expression/mysql/edit_expression/app/models/Fruit.php new file mode 100644 index 00000000..c74c53d9 --- /dev/null +++ b/tests/specs/x_db_default_expression/mysql/edit_expression/app/models/Fruit.php @@ -0,0 +1,10 @@ + [['ts', 'ts2', 'ts3', 'ts4', 'ts5', 'ts6', 'd', 'd2', 'd3', 'ts7'], 'trim'], + 'ts_datetime' => [['ts'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts_default' => [['ts'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts2_datetime' => [['ts2'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts2_default' => [['ts2'], 'default', 'value' => '2011-11-11 00:00:00'], + 'ts3_datetime' => [['ts3'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts3_default' => [['ts3'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts4_string' => [['ts4'], 'string'], + 'ts4_default' => [['ts4'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts5_string' => [['ts5'], 'string'], + 'ts5_default' => [['ts5'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts6_string' => [['ts6'], 'string'], + 'ts6_default' => [['ts6'], 'default', 'value' => '2000-11-11 00:00:00'], + 'd_date' => [['d'], 'date', 'format' => 'php:Y-m-d'], + 'd_default' => [['d'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd2_string' => [['d2'], 'string'], + 'd2_default' => [['d2'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd3_string' => [['d3'], 'string'], + 'd3_default' => [['d3'], 'default', 'value' => 'text default'], + 'ts7_date' => [['ts7'], 'date', 'format' => 'php:Y-m-d'], + 'ts7_default' => [['ts7'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + ]; + } +} diff --git a/tests/specs/x_db_default_expression/mysql/simple/app/models/Fruit.php b/tests/specs/x_db_default_expression/mysql/simple/app/models/Fruit.php new file mode 100644 index 00000000..c74c53d9 --- /dev/null +++ b/tests/specs/x_db_default_expression/mysql/simple/app/models/Fruit.php @@ -0,0 +1,10 @@ + [['ts', 'ts2', 'ts3', 'ts4', 'ts5', 'ts6', 'd', 'd2', 'd3', 'ts7'], 'trim'], + 'ts_datetime' => [['ts'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts_default' => [['ts'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts2_datetime' => [['ts2'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts2_default' => [['ts2'], 'default', 'value' => '2011-11-11 00:00:00'], + 'ts3_datetime' => [['ts3'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts3_default' => [['ts3'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts4_string' => [['ts4'], 'string'], + 'ts4_default' => [['ts4'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts5_string' => [['ts5'], 'string'], + 'ts5_default' => [['ts5'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts6_string' => [['ts6'], 'string'], + 'ts6_default' => [['ts6'], 'default', 'value' => '2000-11-11 00:00:00'], + 'd_date' => [['d'], 'date', 'format' => 'php:Y-m-d'], + 'd_default' => [['d'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd2_string' => [['d2'], 'string'], + 'd2_default' => [['d2'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd3_string' => [['d3'], 'string'], + 'd3_default' => [['d3'], 'default', 'value' => 'text default'], + 'ts7_date' => [['ts7'], 'date', 'format' => 'php:Y-m-d'], + 'ts7_default' => [['ts7'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + ]; + } +} diff --git a/tests/specs/x_db_default_expression/mysql/x_db_default_expression_mysql.php b/tests/specs/x_db_default_expression/mysql/x_db_default_expression_mysql.php index 5fd47d1b..dc4ebbb8 100644 --- a/tests/specs/x_db_default_expression/mysql/x_db_default_expression_mysql.php +++ b/tests/specs/x_db_default_expression/mysql/x_db_default_expression_mysql.php @@ -3,7 +3,7 @@ return [ 'openApiPath' => '@specs/x_db_default_expression/mysql/x_db_default_expression_mysql.yaml', 'generateUrls' => false, - 'generateModels' => false, + 'generateModels' => true, 'excludeModels' => [ 'Error', ], diff --git a/tests/specs/x_db_default_expression/pgsql/edit/app/models/Fruit.php b/tests/specs/x_db_default_expression/pgsql/edit/app/models/Fruit.php new file mode 100644 index 00000000..c74c53d9 --- /dev/null +++ b/tests/specs/x_db_default_expression/pgsql/edit/app/models/Fruit.php @@ -0,0 +1,10 @@ + [['ts', 'ts2', 'ts3', 'ts4', 'ts5', 'ts6', 'd', 'd2', 'd3', 'ts7'], 'trim'], + 'ts_datetime' => [['ts'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts_default' => [['ts'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts2_datetime' => [['ts2'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts2_default' => [['ts2'], 'default', 'value' => '2011-11-11 00:00:00'], + 'ts3_datetime' => [['ts3'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts3_default' => [['ts3'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts4_string' => [['ts4'], 'string'], + 'ts4_default' => [['ts4'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts5_string' => [['ts5'], 'string'], + 'ts5_default' => [['ts5'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts6_string' => [['ts6'], 'string'], + 'ts6_default' => [['ts6'], 'default', 'value' => '2000-11-11 00:00:00'], + 'd_date' => [['d'], 'date', 'format' => 'php:Y-m-d'], + 'd_default' => [['d'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd2_string' => [['d2'], 'string'], + 'd2_default' => [['d2'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd3_string' => [['d3'], 'string'], + 'd3_default' => [['d3'], 'default', 'value' => 'text default'], + 'ts7_date' => [['ts7'], 'date', 'format' => 'php:Y-m-d'], + 'ts7_default' => [['ts7'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + ]; + } +} diff --git a/tests/specs/x_db_default_expression/pgsql/edit_expression/app/models/Fruit.php b/tests/specs/x_db_default_expression/pgsql/edit_expression/app/models/Fruit.php new file mode 100644 index 00000000..c74c53d9 --- /dev/null +++ b/tests/specs/x_db_default_expression/pgsql/edit_expression/app/models/Fruit.php @@ -0,0 +1,10 @@ + [['ts', 'ts2', 'ts3', 'ts4', 'ts5', 'ts6', 'd', 'd2', 'd3', 'ts7'], 'trim'], + 'ts_datetime' => [['ts'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts_default' => [['ts'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts2_datetime' => [['ts2'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts2_default' => [['ts2'], 'default', 'value' => '2011-11-11 00:00:00'], + 'ts3_datetime' => [['ts3'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts3_default' => [['ts3'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts4_string' => [['ts4'], 'string'], + 'ts4_default' => [['ts4'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts5_string' => [['ts5'], 'string'], + 'ts5_default' => [['ts5'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts6_string' => [['ts6'], 'string'], + 'ts6_default' => [['ts6'], 'default', 'value' => '2000-11-11 00:00:00'], + 'd_date' => [['d'], 'date', 'format' => 'php:Y-m-d'], + 'd_default' => [['d'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd2_string' => [['d2'], 'string'], + 'd2_default' => [['d2'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd3_string' => [['d3'], 'string'], + 'd3_default' => [['d3'], 'default', 'value' => 'text default'], + 'ts7_date' => [['ts7'], 'date', 'format' => 'php:Y-m-d'], + 'ts7_default' => [['ts7'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + ]; + } +} diff --git a/tests/specs/x_db_default_expression/pgsql/simple/app/models/Fruit.php b/tests/specs/x_db_default_expression/pgsql/simple/app/models/Fruit.php new file mode 100644 index 00000000..c74c53d9 --- /dev/null +++ b/tests/specs/x_db_default_expression/pgsql/simple/app/models/Fruit.php @@ -0,0 +1,10 @@ + [['ts', 'ts2', 'ts3', 'ts4', 'ts5', 'ts6', 'd', 'd2', 'd3', 'ts7'], 'trim'], + 'ts_datetime' => [['ts'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts_default' => [['ts'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts2_datetime' => [['ts2'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts2_default' => [['ts2'], 'default', 'value' => '2011-11-11 00:00:00'], + 'ts3_datetime' => [['ts3'], 'datetime', 'format' => 'php:Y-m-d H:i:s'], + 'ts3_default' => [['ts3'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts4_string' => [['ts4'], 'string'], + 'ts4_default' => [['ts4'], 'default', 'value' => '2022-11-11 00:00:00'], + 'ts5_string' => [['ts5'], 'string'], + 'ts5_default' => [['ts5'], 'default', 'value' => new \yii\db\Expression("(CURRENT_TIMESTAMP)")], + 'ts6_string' => [['ts6'], 'string'], + 'ts6_default' => [['ts6'], 'default', 'value' => '2000-11-11 00:00:00'], + 'd_date' => [['d'], 'date', 'format' => 'php:Y-m-d'], + 'd_default' => [['d'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd2_string' => [['d2'], 'string'], + 'd2_default' => [['d2'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + 'd3_string' => [['d3'], 'string'], + 'd3_default' => [['d3'], 'default', 'value' => 'text default'], + 'ts7_date' => [['ts7'], 'date', 'format' => 'php:Y-m-d'], + 'ts7_default' => [['ts7'], 'default', 'value' => new \yii\db\Expression("(CURRENT_DATE + INTERVAL 1 YEAR)")], + ]; + } +}