1<?php
2
3namespace DoctrineExtensions\Types;
4
5use Carbon\Carbon;
6use Doctrine\DBAL\Platforms\AbstractPlatform;
7use Doctrine\DBAL\Types\DateTimeTzType;
8
9class CarbonDateTimeTzType extends DateTimeTzType
10{
11    const CARBONDATETIMETZ = 'carbondatetimetz';
12
13    public function getName()
14    {
15        return static::CARBONDATETIMETZ;
16    }
17
18    public function convertToPHPValue($value, AbstractPlatform $platform)
19    {
20        $result = parent::convertToPHPValue($value, $platform);
21
22        if ($result instanceof \DateTime) {
23            return Carbon::instance($result);
24        }
25
26        return $result;
27    }
28
29    public function requiresSQLCommentHint(AbstractPlatform $platform)
30    {
31        return true;
32    }
33}
34