kamilkrzywda / doctrine-dateinterval
支持 Doctrine DBAL 和 ORM 中的 DateInterval。
dev-master / 1.0.x-dev
2016-02-04 09:33 UTC
Requires
- php: >=5.3.3
- doctrine/dbal: >=2.2.3,<2.4-dev
- kamilkrzywda/date-interval: >=1.0-dev,<2.0-dev
Requires (Dev)
- doctrine/orm: >=2.2.3,<2.4-dev
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-09-20 10:07:22 UTC
README
支持 Doctrine DBAL 和 ORM 中的 DateInterval。
摘要
DateInterval
库
- 为 DBAL 添加了
dateinterval
类型 - 为 ORM 添加了
DATE_INTERVAL
DQL 函数
这得益于 DateInterval
库。
安装
将其添加到 Composer 依赖列表中
$ composer require herrera-io/doctrine-dateinterval=1.*
在 Doctrine DBAL 中注册它
<?php use Doctrine\DBAL\Types\Type; use Herrera\Doctrine\DBAL\Types\DateIntervalType; Type::addType( DateIntervalType::DATEINTERVAL, 'Herrera\\Doctrine\\DBAL\\Types\\DateIntervalType' );
在 Doctrine ORM 中注册它
<?php $entityManager->getConfiguration()->addCustomDatetimeFunction( 'Herrera\\Doctrine\\ORM\\Query\\AST\\Functions\\DateIntervalFunction' );
用法
<?php /** * @Entity() * @Table(name="Jobs") */ class Job { /** * @Column(type="integer") * @GeneratedValue(strategy="AUTO") * @Id() */ private $id; /** * @Column(type="dateinterval") */ private $interval; /** * @return DateInterval */ public function getInterval() { return $this->interval; } /** * @param DateInterval $interval */ public function setInterval(DateInterval $interval) { $this->interval = $interval; } } $annualJob = new Job(); $annualJob->setInterval(new DateInterval('P1Y')); $monthlyJob = new Job(); $monthlyJob->setInterval(new DateInterval('P1M')); $dailyJob = new Job(); $dailyJob->setInterval(new DateInterval('P1D')); $entityManager->persist($annualJob); $entityManager->persist($monthlyJob); $entityManager->persist($dailyJob); $entityManager->flush(); $entityManager->clear(); $jobs = $entityManager->createQuery( "SELECT j FROM Jobs j WHERE j.interval < DATE_INTERVAL('P1Y') ORDER BY j.interval ASC" )->getResult(); echo $jobs[0]->getInterval()->toSpec(); // "P1D" echo $jobs[1]->getInterval()->toSpec(); // "P1M"
注意 返回的日期间隔实例为
Herrera\DateInterval\DateInterval
。