salamek / doctrine-daterange
Supports postgre DateRange in Doctrine DBAL.
v1.1
2016-06-23 19:26 UTC
Requires
- php: >=5.3.3
- doctrine/dbal: ~2.2,>=2.2.3
- salamek/php-daterange: >=1.0
Requires (Dev)
- doctrine/orm: ~2.2,>=2.2.3
- phpunit/phpunit: 3.7.*
This package is auto-updated.
Last update: 2024-12-13 06:03:47 UTC
README
Supports PostgreSQL DateRange in Doctrine DBAL.
Summary
The DateRange
library
- adds a
daterange
type to DBAL
Installation
Add it to your list of Composer dependencies:
composer require salamek/doctrine-daterange
Register it with Doctrine DBAL:
<?php use Doctrine\DBAL\Types\Type; use Salamek\Doctrine\DBAL\Types\DateRangeType; Type::addType( DateRangeType::DATERANGE, 'Salamek\\Doctrine\\DBAL\\Types\\DateRangeType' );
When using Symfony2 with Doctrine you can do the same as above by only changing your configuration:
# app/config/config.yml # Doctrine Configuration doctrine: dbal: # ... mapping_types: daterange: daterange types: daterange: Salamek\Doctrine\DBAL\Types\DateRangeType
Usage
<?php /** * @Entity() * @Table(name="jobs") */ class Job { /** * @Column(type="integer") * @GeneratedValue(strategy="AUTO") * @Id() */ private $id; /** * @Column(type="daterange") */ private $range; /** * @return \Salamek\DateRange */ public function getRange() { return $this->range; } /** * @param \Salamek\DateRange $range */ public function setRange(\Salamek\DateRange $range) { $this->range = $range; } } $annualJob = new Job(); $annualJob->setRange(new \Salamek\DateRange(new \DateTime, (new \DateTime)->modify('+1 year'))); $entityManager->persist($annualJob); $entityManager->flush(); $entityManager->clear(); $jobs = $entityManager->createQuery( "SELECT j FROM Jobs j" )->getResult(); echo $jobs[0]->getRange()->getStartDate()->format(DateTime::ISO8601); // "NOW" echo $jobs[0]->getRange()->getEndDate()->format(DateTime::ISO8601); // "NOW +1 year"