zicht / versioning-bundle
该包已被放弃,不再维护。没有建议替代包。
Zicht 版本控制
1.1.4
2021-02-01 10:43 UTC
Requires
- php: >=5.6
- doctrine/common: *@stable
- doctrine/orm: *@stable
- sonata-project/admin-bundle: *
- symfony/console: 2.*
- symfony/http-foundation: 2.*
- symfony/property-access: 2.*
- symfony/security: 2.*
- symfony/serializer: 2.*
- zicht/itertools: 2.*@stable
- zicht/util: 1.*@stable
Requires (Dev)
- behat/behat: ~3.0
- behat/mink: ~1.6
- behat/mink-extension: ~2.1
- phpunit/phpunit: 4.*@stable
- dev-release/1.x
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.12
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.9-rc.3
- 1.0.9-rc.2
- 1.0.9-rc.1
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.6-rc.1
- 1.0.5
- 1.0.5-rc.1
- 1.0.4
- 1.0.4-rc.1
- 1.0.3
- 1.0.2
- 1.0.2-rc.1
- 1.0.1
- 1.0.0
- 1.0.0-rc.3
- 1.0.0-rc.2
- 1.0.0-rc.1
- 1.0.0-beta.13
- 1.0.0-beta.12
- 1.0.0-beta.11
- 1.0.0-beta.10
- 1.0.0-beta.9
- 1.0.0-beta.8
- 1.0.0-beta.7
- 1.0.0-beta.6
- 1.0.0-beta.5
- 1.0.0-beta.4
- 1.0.0-beta.3
- 1.0.0-beta.2
- 1.0.0-beta.1
- 1.0.0-alpha.1
This package is auto-updated.
Last update: 2022-10-29 02:39:50 UTC
README
ZichtVersioningBundle 通过 Doctrine 集成,将版本保存在名为 EntityVersion
的独立实体中,跟踪更改,并能够回滚到和计划未来的版本。
实现说明
标记可版本化行为
要使实体可版本化,实体应实现 VersionableInterface
接口。对于所有 OneToMany 关系,关系必须标记为 cascade={...,"persist"}
,并且包含的实体必须实现 EmbeddedVersionableInterface
。
实体表中的当前版本数据称为 active
版本。通过设置另一个版本为活动状态,将版本表中的数据加载到实体中并持久化到数据库。这使得版本控制透明;即,其他组件不需要知道实体是版本化的,可以直接查询数据库,因为 active
版本始终在数据库表中。
有一个命令可以内省这些版本,这对于调试很有用。
克隆对象
如果您想要能够克隆对象,您需要 重置对象 id
public function __clone()
{
$this->id = null;
}
否则,版本控制将混淆记录 id 引用。
Sonata 集成
由于版本化的嵌入实体不存在于数据库中,Sonata 使用 id(在路由中的 childId
参数)引用对象的方 法不适用。为此,提供了 EmbeddedVersionableAdminTrait
以覆盖 id()
、update()
和 generateObjectUrl()
方法,因此使用 索引 而不是 id 来引用子对象。这些值是从父对象而不是从
您应该在管理实现 EmbeddedVersionableInterface
的实体的所有管理员中使用此 trait,例如
class ContentItemDetailAdmin extends Admin
{
use EmbeddedVersionableAdminTrait;
}
维护者
- Boudewijn Schoon boudewijn@zicht.nl