mnavarrocarter/doctrine-carbon-bundle

此包已被废弃,不再维护。未建议替代包。

在Symfony中自动将Doctrine日期时间作为Carbon实例获取。

1.1.0 2018-01-15 12:58 UTC

This package is auto-updated.

Last update: 2019-08-18 18:32:29 UTC


README

在Symfony中自动将Doctrine日期时间作为Carbon实例获取。

安装

安装时,只需在项目根目录下运行

composer require mnavarrocarter/doctrine-carbon-bundle

在Composer运行时,感谢@Jordi并启用AppKernel中的扩展

// app/AppKernel.php

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...

            new MNC\DoctrineCarbonBundle\MNCDoctrineCarbonBundle(),
        );

        // ...
    }

    // ...
}

工作原理

MNCDoctrineCarbonBundle利用流行的Carbon库作为服务,以将DateTime实例转换为Carbon实例。

默认情况下,它监听你的实体(及其getter和setter)中的createdAtupdatedAtdeletedAt属性,并在每次从数据库获取它们时将它们转换为Carbon实例,因此你可以做些酷的事情,比如

$entity->getCreatedAt()->diffForHumans()  // Ex, Outputs '21 months ago'.

由于MNCDoctrineCarbonBundle默认监听这些字段,如果你在项目中使用了如StofDoctrineExtensionsBundle之类的库,它是一个完美的伴侣。

指定其他属性名称

在你的config.yml文件中,你可以指定要监听的属性

# app/config/config.yml

# ...

mnc_doctrine_carbon:
    properties: ['createdAt', 'editedAt', 'publishedAt'] # Array of property names

请注意,你需要为要转换的属性提供camelCase的getter和setter,以便MNCDoctrineCarbonBundle能够正确地执行。同时,如果属性在类中不存在,则完全忽略,不会触发错误。

细化

从1.1.0版本开始,你可以使用特殊的@Carbon注解将单个DateTime属性转换为Carbon实例。

<?php

class Entity {

    use MNC\DoctrineCarbonBundle\Annotations;
    
    /**
     * @ORM\Column(type="datetime")
     * @Carbon()
     */
    private $publishedAt;

}

什么是Carbon?

Carbon是一个库,作为php的DateTime内置类的包装器,提供易于使用且功能丰富的API,使日期和时间的常见操作变得简单而愉快。

感谢Brian Nesbitt的出色工作!