Я пытаюсь реализовать Datatype Doctrine Custom для сохранения десятичных знаков в валюте как целое число SQL. Я не могу изменить дизайн базы данных, поэтому мне придется:
<?php namespace Doctrine\DBAL\Types; use Doctrine\DBAL\Platforms\AbstractPlatform; class Currency extends Type { const CURRENCY = 'currency'; const DECIMALS = 2; public function getName() { return self::CURRENCY; } public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform) { return $platform->getDoctrineTypeMapping('CURRENCY'); } public function convertToPHPValue($value, AbstractPlatform $platform) { return ($value / pow(10, self::DECIMALS)); } public function convertToDatabaseValue($value, AbstractPlatform $platform) { return (int) ($value * pow(10, self::DECIMALS)); } } ?>
Это отлично работает, если я загружу свой объект с помощью метода «find» EntityRepository. Но это не работает, если вы используете инструкции «UPDATE» DQL. Что я могу сделать, чтобы сделать эту работу в DQL-заявлениях тоже?