1: <?php
2:
3: declare(strict_types=1);
4:
5: namespace Atk4\Data\Type;
6:
7: use Doctrine\DBAL\Platforms\AbstractPlatform;
8: use Doctrine\DBAL\Types as DbalTypes;
9:
10: class MoneyType extends DbalTypes\Type
11: {
12: #[\Override]
13: public function getName(): string
14: {
15: return Types::MONEY;
16: }
17:
18: #[\Override]
19: public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform): string
20: {
21: return DbalTypes\Type::getType(DbalTypes\Types::FLOAT)->getSQLDeclaration($fieldDeclaration, $platform);
22: }
23:
24: #[\Override]
25: public function convertToDatabaseValue($value, AbstractPlatform $platform): ?float
26: {
27: if ($value === null || trim((string) $value) === '') {
28: return null;
29: }
30:
31: return round((float) $value, 4);
32: }
33:
34: #[\Override]
35: public function convertToPHPValue($value, AbstractPlatform $platform): ?float
36: {
37: return $this->convertToDatabaseValue($value, $platform);
38: }
39:
40: #[\Override]
41: public function requiresSQLCommentHint(AbstractPlatform $platform): bool
42: {
43: return true;
44: }
45: }
46: