mnavarrocarter / doctrine-carbon-bundle
此包已被废弃,不再维护。未建议替代包。
在Symfony中自动将Doctrine日期时间作为Carbon实例获取。
1.1.0
2018-01-15 12:58 UTC
Requires
- php: >=7.1.0
- doctrine/doctrine-bundle: ^1.6
- doctrine/orm: ^2.5
- nesbot/carbon: ^1.22
- symfony/framework-bundle: ~2.1|~3.0
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)中的createdAt
、updatedAt
和deletedAt
属性,并在每次从数据库获取它们时将它们转换为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的出色工作!