riccardonar/doctrine-intrange

支持 Doctrine DBAL 中的 PostgreSQL intrange。

1.0.0 2017-01-26 13:42 UTC

This package is auto-updated.

Last update: 2024-09-23 20:06:03 UTC


README

感谢 @Salamek,这是一个对 https://github.com/Salamek/doctrine-daterange 的适配

支持 Doctrine DBAL 中的 PostgreSQL DateRange。

摘要

IntRange

  • 为 DBAL 添加了 intrange 类型

安装

将其添加到您的 Composer 依赖列表中

composer require riccardonar/doctrine-intrange

在 Doctrine DBAL 中注册它

<?php

use Doctrine\DBAL\Types\Type;
use riccardonar\Doctrine\DBAL\Types\IntRangeType;

Type::addType(
    IntRangeType::INTRANGE,
    'riccardonar\\Doctrine\\DBAL\\Types\\IntRangeType'
);

当使用 Doctrine 与 Symfony2 时,您可以通过仅更改配置来实现与上述相同的操作

# app/config/config.yml

# Doctrine Configuration
doctrine:
    dbal:
        # ...
        mapping_types:
            intrange: intrange
        types:
            intrange:  riccardonar\Doctrine\DBAL\Types\IntRangeType

用法

<?php

/**
 * @Entity()
 * @Table(name="jobs")
 */
class Job
{
    /**
     * @Column(type="integer")
     * @GeneratedValue(strategy="AUTO")
     * @Id()
     */
    private $id;

    /**
     * @Column(type="intrange")
     */
    private $range;

    /**
     * @return \riccardonar\IntRange
     */
    public function getRange()
    {
        return $this->range;
    }

    /**
     * @param \riccardonar\IntRange $range
     */
    public function setRange(array $range)
    {
        $this->range = $range;
    }
}

$annualJob = new Job();
$annualJob->setRange(new \riccardonar\IntRange(1, 6));

$entityManager->persist($annualJob);
$entityManager->flush();
$entityManager->clear();

$jobs = $entityManager->createQuery(
    "SELECT j FROM Jobs j"
)->getResult();

echo $jobs[0]->getRange()->getStartInt(); // 1
echo $jobs[0]->getRange()->getEndInt(); //  6