composer require mapado/pretty-typesCompatible with doctrine/dbal 2.6+, 3.x and 4.x.
Based on Doctrine DBAL types.
Will store pretty printed JSON into database.
In your config file
# Doctrine Configuration
doctrine:
dbal:
types:
json_pretty: Mapado\PrettyTypes\JsonPrettyTypeIn your entities
/**
* ...
*
* @ORM\Column(name="column_name", type="json_pretty")
*/If you want to store datetime in UTC in your database.
Copied version from Working with DateTime Instances.
All credits goes to the doctrine team !
In your config file
# Doctrine Configuration
doctrine:
dbal:
types:
datetime: Mapado\PrettyTypes\UTCDateTimeType
datetime_immutable: Mapado\PrettyTypes\UTCDateTimeImmutableType
datetimetz: Mapado\PrettyTypes\UTCDateTimeTypeBe aware that this will override all datetimes configured with doctrine.
If you do not want to override everything and use a custom types instead:
# Doctrine Configuration
doctrine:
dbal:
types:
utcdatetime: Mapado\PrettyTypes\UTCDateTimeType
utc_datetime_immutable: Mapado\PrettyTypes\UTCDateTimeImmutableTypeIn your entities, if you overrode the default datetime types, Doctrine will implicitly use the new types for all datetime fields:
#[ORM\Column]
private \DateTime $someDate;
#[ORM\Column]
private \DateTimeImmutable $someDate;UTCDateTimeType accepts both \DateTime and \DateTimeImmutable values when writing to the database.
You should store the timezone next to the datetime too. Read the doctrine documentation for more informations.
If you configured a custom type, use this instead:
#[ORM\Column(type: 'utcdatetime')]
private \DateTime $someDate;
#[ORM\Column(type: 'utc_datetime_immutable')]
private \DateTimeImmutable $someDate;doctrine/dbal 4 dropped the built-in array type (PHP serialize() stored in a text column).
LegacyArrayType is a port of the DBAL 3 ArrayType, so an application upgrading to DBAL 4 keeps reading and writing its existing array columns.
In your config file
# Doctrine Configuration
doctrine:
dbal:
types:
array: Mapado\PrettyTypes\LegacyArrayTypeIn your entities
#[ORM\Column(type: 'array')]
private array $someArray;Prefer the json type for new columns: this type only exists to keep existing data readable.
This project is licensed under the MIT license.