packages/translatable-bundle/Doctrine/DBAL/Types/TranslatableType.php line 55

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by simpson <simpsonwork@gmail.com>
  4.  * Date: 11.10.2019
  5.  * Time: 15:26
  6.  */
  7. namespace AngelGamez\TranslatableBundle\Doctrine\DBAL\Types;
  8. use AngelGamez\TranslatableBundle\Entity\TranslatableValue;
  9. use Doctrine\DBAL\Platforms\AbstractPlatform;
  10. use Doctrine\DBAL\Types\Type;
  11. class TranslatableType extends Type
  12. {
  13.     const NAME 'translatable';
  14.     /**
  15.      * @inheritDoc
  16.      */
  17.     public function getSQLDeclaration(array $fieldDeclarationAbstractPlatform $platform)
  18.     {
  19.         return $platform->getJsonTypeDeclarationSQL($fieldDeclaration);
  20.     }
  21.     /**
  22.      * @inheritDoc
  23.      */
  24.     public function getName()
  25.     {
  26.         return self::NAME;
  27.     }
  28.     /**
  29.      * @param \AngelGamez\TranslatableBundle\Entity\TranslatableValue|null $value
  30.      * @param AbstractPlatform                                             $platform
  31.      *
  32.      * @return null|string
  33.      */
  34.     public function convertToDatabaseValue($valueAbstractPlatform $platform)
  35.     {
  36.         if (null === $value) {
  37.             return null;
  38.         }
  39.         return \json_encode($value);
  40.     }
  41.     /**
  42.      * @param mixed            $value
  43.      * @param AbstractPlatform $platform
  44.      *
  45.      * @return TranslatableValue
  46.      */
  47.     public function convertToPHPValue($valueAbstractPlatform $platform)
  48.     {
  49.         if (null === $value || '' === $value) {
  50.             return new TranslatableValue();
  51.         }
  52.         $value \is_resource($value) ? \stream_get_contents($value) : $value;
  53.         return new TranslatableValue(\json_decode($valuetrue));
  54.     }
  55.     /**
  56.      * @inheritDoc
  57.      */
  58.     public function requiresSQLCommentHint(AbstractPlatform $platform)
  59.     {
  60.         return !$platform->hasNativeJsonType();
  61.     }
  62. }