nucleos / doctrine-extensions
有用的 Doctrine 事件钩子。
Requires
- php: ^8.1
- doctrine/common: ^2.12 || ^3.0
- doctrine/dbal: ^3.8 || ^4.0
- doctrine/event-manager: ^1.0 || ^2.0
- doctrine/orm: ^2.18 || ^3.0
- doctrine/persistence: ^1.3 || ^2.0 || ^3.0
- symfony/property-access: ^6.4 || ^7.0
- symfony/uid: ^6.4 || ^7.0
Requires (Dev)
- doctrine/doctrine-bundle: ^2.5
- doctrine/doctrine-migrations-bundle: ^3.2
- ergebnis/composer-normalize: ^2.0.1
- symfony/browser-kit: ^6.4 || ^7.0
- symfony/dependency-injection: ^6.4 || ^7.0
- symfony/expression-language: ^6.4 || ^7.0
- symfony/framework-bundle: ^6.4 || ^7.0
Suggests
- symfony/framework-bundle: If you want to use symfony
Conflicts
- doctrine/doctrine-bundle: <2.5
- symfony/framework-bundle: <6.4
- 4.16.x-dev
- 4.15.x-dev
- 4.15.0
- 4.14.x-dev
- 4.14.0
- 4.13.x-dev
- 4.13.0
- 4.12.x-dev
- 4.12.0
- 4.11.x-dev
- 4.11.0
- 4.10.x-dev
- 4.10.0
- 4.9.x-dev
- 4.9.0
- 4.8.x-dev
- 4.8.1
- 4.8.0
- 4.7.x-dev
- 4.7.2
- 4.7.1
- 4.7.0
- 4.6.x-dev
- 4.6.0
- 4.5.x-dev
- 4.5.0
- 4.4.x-dev
- 4.4.0
- 4.3.x-dev
- 4.3.0
- 4.2.x-dev
- 4.2.0
- 4.1.0
- 4.0.0
- 3.3.0
- 3.2.0
- 3.1.0
- 3.0.0
- 2.0.0
- 1.0.0
- 0.3.0
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.0
- dev-renovate/phpunit-phpunit-11.x
- dev-renovate/matthiasnoback-symfony-dependency-injection-test-6.x
- dev-readme-badge
- dev-dependabot/composer/vendor-bin/tools/symplify/changelog-linker-9.0.40
This package is auto-updated.
Last update: 2024-09-14 20:20:19 UTC
README
此库提供了一些有用的 Doctrine 钩子。
安装
打开命令控制台,进入您的项目目录,并执行以下命令以下载此库的最新稳定版本
composer require nucleos/doctrine-extensions
使用
可确认实体
如果您需要需要确认的实体,只需在您的实体类中实现 Nucleos\Doctrine\Model\ConfirmableInterface
。
如果您不需要 symfony 框架,您需要注册 Nucleos\Doctrine\EventListener\ORM\ConfirmableListener
。
可删除实体
如果您需要软删除的实体,只需在您的实体类中实现 Nucleos\Doctrine\Model\DeletableInterface
。
如果您不需要 symfony 框架,您需要注册 Nucleos\Doctrine\EventListener\ORM\DeletableListener
。
生命周期感知实体
如果您需要生命周期信息(创建/更新日期),只需在您的实体类中实现 Nucleos\Doctrine\Model\LifecycleDateTimeInterface
。
如果您不需要 symfony 框架,您需要注册 Nucleos\Doctrine\EventListener\ORM\LifecycleDateListener
。
位置感知实体
如果您需要可排序的实体,只需在您的实体类中实现 Nucleos\Doctrine\Model\PositionAwareInterface
。
如果您不需要 symfony 框架,您需要注册 Nucleos\Doctrine\EventListener\ORM\SortableListener
。
唯一活动实体
如果您需要只能有一个活动状态的实体,只需在您的实体类中实现 Nucleos\Doctrine\Model\UniqueActiveInterface
。
如果您不需要 symfony 框架,您需要注册 Nucleos\Doctrine\EventListener\ORM\UniqueActiveListener
。
表前缀
如果您需要为所有应用程序表和序列添加前缀,您可以使用 TablePrefixEventListener
。如果表名已经以定义的前缀开头,它将被忽略。
如果您不需要 symfony 框架,您需要注册 Nucleos\Doctrine\EventListener\ORM\TablePrefixEventListener
。
迁移使用
-
将
id
列从integer
更改为guid
。 -
创建一个新的迁移
// src/Migrations/Version123.php <?php namespace Application\Migrations; use Doctrine\DBAL\Schema\Schema; use Doctrine\Migrations\AbstractMigration; use Nucleos\Doctrine\Migration\IdToUuidMigration; class Version123 extends AbstractMigration { private IdToUuidMigration $idToUuidMigration; public function __construct(Connection $connection, LoggerInterface $logger) { parent::__construct($connection, $logger); $this->idToUuidMigration = new IdToUuidMigration($this->connection, $logger); } public function postUp(Schema $schema): void { $this->idToUuidMigration->migrate('my_table_name'); } }
Symfony 使用
如果您想在 symfony 中使用此库,可以使用桥梁。
启用 Bundle
然后,通过将其添加到项目 config/bundles.php
文件中注册的包列表中启用 Bundle。
// config/bundles.php return [ // ... Nucleos\Doctrine\Bridge\Symfony\Bundle\NucleosDoctrineBundle::class => ['all' => true], ];
配置 Bundle
创建一个名为 nucleos_doctrine.yaml
的配置文件
# config/packages/nucleos_doctrine.yaml nucleos_doctrine: table: prefix: 'acme_'
许可证
此库受 MIT 许可证 的约束。