%PDF- %PDF-
Direktori : /var/www/html/hr/api/vendor/nesbot/carbon/src/Carbon/Doctrine/ |
Current File : /var/www/html/hr/api/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonType.php |
<?php /** * Thanks to https://github.com/flaushi for his suggestion: * https://github.com/doctrine/dbal/issues/2873#issuecomment-534956358 */ namespace Carbon\Doctrine; use Carbon\Carbon; use Carbon\CarbonInterface; use DateTimeInterface; use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\ConversionException; trait CarbonType { protected function getCarbonClassName(): string { return Carbon::class; } public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform) { $precision = $fieldDeclaration['precision'] ?: DateTimeDefaultPrecision::get(); $type = parent::getSQLDeclaration($fieldDeclaration, $platform); if (!$precision) { return $type; } if (strpos($type, '(') !== false) { return preg_replace('/\(\d+\)/', "($precision)", $type); } list($before, $after) = explode(' ', "$type "); return trim("$before($precision) $after"); } /** * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function convertToPHPValue($value, AbstractPlatform $platform) { if ($value === null || $value instanceof CarbonInterface) { return $value; } $class = $this->getCarbonClassName(); if ($value instanceof DateTimeInterface) { return $class::instance($value); } $date = $class::parse($value); if (!$date) { throw ConversionException::conversionFailedFormat( $value, $this->getName(), 'Y-m-d H:i:s.u' ); } return $date; } /** * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function convertToDatabaseValue($value, AbstractPlatform $platform) { if ($value === null) { return $value; } if ($value instanceof DateTimeInterface) { return $value->format('Y-m-d H:i:s.u'); } throw ConversionException::conversionFailedInvalidType( $value, $this->getName(), ['null', 'DateTime'] ); } /** * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function requiresSQLCommentHint(AbstractPlatform $platform) { return true; } }