31
31
use function str_starts_with ;
32
32
use function strtolower ;
33
33
use function substr ;
34
+ use function substr_compare ;
34
35
use function trim ;
35
36
36
37
use const PHP_INT_SIZE ;
@@ -424,6 +425,7 @@ protected function loadResultColumn(array $metadata): ColumnInterface|null
424
425
'float ' , 'double ' , 'decimal ' => $ columnInfo ['scale ' ] = $ metadata ['precision ' ],
425
426
'bigint ' => $ metadata ['len ' ] === 20 ? $ columnInfo ['unsigned ' ] = true : null ,
426
427
'int ' => $ metadata ['len ' ] === 10 && PHP_INT_SIZE !== 8 ? $ columnInfo ['unsigned ' ] = true : null ,
428
+ 'timestamp ' => $ columnInfo ['dbTimezone ' ] = $ this ->db ->getServerInfo ()->getTimezone (),
427
429
default => null ,
428
430
};
429
431
@@ -444,8 +446,7 @@ protected function loadResultColumn(array $metadata): ColumnInterface|null
444
446
private function loadColumn (array $ info ): ColumnInterface
445
447
{
446
448
$ extra = trim (str_ireplace ('auto_increment ' , '' , $ info ['extra ' ], $ autoIncrement ));
447
-
448
- $ column = $ this ->db ->getColumnFactory ()->fromDefinition ($ info ['column_type ' ], [
449
+ $ columnInfo = [
449
450
'autoIncrement ' => $ autoIncrement > 0 ,
450
451
'comment ' => $ info ['column_comment ' ] === '' ? null : $ info ['column_comment ' ],
451
452
'defaultValueRaw ' => $ info ['column_default ' ],
@@ -456,7 +457,13 @@ private function loadColumn(array $info): ColumnInterface
456
457
'schema ' => $ info ['schema ' ],
457
458
'table ' => $ info ['table ' ],
458
459
'unique ' => $ info ['column_key ' ] === 'UNI ' ,
459
- ]);
460
+ ];
461
+
462
+ if (substr_compare ($ info ['column_type ' ], 'timestamp ' , 0 , 9 , true ) === 0 ) {
463
+ $ columnInfo ['dbTimezone ' ] = $ this ->db ->getServerInfo ()->getTimezone ();
464
+ }
465
+
466
+ $ column = $ this ->db ->getColumnFactory ()->fromDefinition ($ info ['column_type ' ], $ columnInfo );
460
467
461
468
if (str_starts_with ($ extra , 'DEFAULT_GENERATED ' )) {
462
469
$ extra = trim (substr ($ extra , 18 ));
0 commit comments