Force empty array DB default for array fields

This commit is contained in:
Yurii
2026-05-26 16:23:07 +03:00
parent 9da2d3dbc2
commit b6eb60b17f
2 changed files with 10 additions and 0 deletions

View File

@@ -49,6 +49,7 @@ class MysqlColumnPreparator implements ColumnPreparator
private const PARAM_PRECISION = 'precision';
private const PARAM_SCALE = 'scale';
private const PARAM_BINARY = 'binary';
private const string PARAM_STORE_ARRAY_VALUES = 'storeArrayValues';
public const TYPE_MYSQL = 'MySQL';
public const TYPE_MARIADB = 'MariaDB';
@@ -142,6 +143,10 @@ class MysqlColumnPreparator implements ColumnPreparator
case Entity::JSON_ARRAY:
$default = is_array($default) ? json_encode($default) : null;
if ($defs->getParam(self::PARAM_STORE_ARRAY_VALUES)) {
$default = json_encode([]);
}
$column = $column->withDefault($default);
break;

View File

@@ -45,6 +45,7 @@ class PostgresqlColumnPreparator implements ColumnPreparator
private const PARAM_AUTOINCREMENT = 'autoincrement';
private const PARAM_PRECISION = 'precision';
private const PARAM_SCALE = 'scale';
private const string PARAM_STORE_ARRAY_VALUES = 'storeArrayValues';
/** @var string[] */
private array $textTypeList = [
@@ -120,6 +121,10 @@ class PostgresqlColumnPreparator implements ColumnPreparator
case Entity::JSON_ARRAY:
$default = is_array($default) ? json_encode($default) : null;
if ($defs->getParam(self::PARAM_STORE_ARRAY_VALUES)) {
$default = json_encode([]);
}
$column = $column->withDefault($default);
break;