tourze / doctrine-timestamp-bundle
时间增强
Installs: 2 508
Dependents: 16
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: ^8.1
- doctrine/doctrine-bundle: ^2.13
- doctrine/orm: ^2.20 || ^3.0
- doctrine/persistence: ^3.1 || ^4
- nesbot/carbon: ^2.72 || ^3
- psr/log: ^3|^2|^1
- symfony/config: ^6.4
- symfony/dependency-injection: ^6.4
- symfony/framework-bundle: ^6.4
- symfony/http-kernel: ^6.4
- symfony/property-access: ^6.4
- symfony/yaml: ^6.4 || ^7.1
- tourze/bundle-dependency: 0.0.*
- tourze/doctrine-entity-checker-bundle: ~0.0.8
Requires (Dev)
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^10.0
README
A Symfony bundle that automatically manages creation and update timestamps for Doctrine entities via PHP attributes.
Features
- Automatically sets creation timestamp on persist
- Automatically updates modification timestamp on update
- Supports both DateTime and Unix timestamp formats
- Configuration via PHP 8.1 attributes
- Zero configuration: just add attributes to your entity fields
- Compatible with Doctrine ORM and Symfony 6.4+
Installation
Requirements
- PHP >= 8.1
- Symfony >= 6.4
- doctrine/doctrine-bundle >= 2.13
Install via Composer
composer require tourze/doctrine-timestamp-bundle
Quick Start
Add attributes to your entity
use Tourze\DoctrineTimestampBundle\Attribute\CreateTimeColumn; use Tourze\DoctrineTimestampBundle\Attribute\UpdateTimeColumn; use Tourze\DoctrineTimestampBundle\Enum\Types; class YourEntity { #[CreateTimeColumn(type: Types::datetime)] private DateTime $createdAt; #[UpdateTimeColumn(type: Types::timestamp)] private int $updatedAt; }
Types::datetime
: stores as DateTime object (default)Types::timestamp
: stores as Unix timestamp
No further configuration is needed. The bundle will automatically set these fields during persist and update events.
Documentation
Attributes
CreateTimeColumn
: Marks a property as the creation timestampUpdateTimeColumn
: Marks a property as the update timestamp- Both accept an optional
type
parameter:Types::datetime
orTypes::timestamp
Event Subscriber
- The bundle registers a Doctrine event subscriber (
TimeListener
) that listens toprePersist
andpreUpdate
events. - On entity creation, if the field is empty, sets the current time.
- On entity update, if the field is not manually changed, updates the time.
Advanced Usage
- You can use either
DateTime
orint
(timestamp) as your property type. - Works with property accessor for flexible entity property handling.
Contribution Guide
- Please submit issues and pull requests via GitHub.
- Code style: PSR-12
- Run tests and static analysis before submitting PRs.
- See CONTRIBUTING.md if available.
License
MIT License. See LICENSE for details.
Author
tourze https://github.com/tourze
Changelog
See CHANGELOG.md for version history and upgrade notes.