所以我试图找到一种方法来获取可版本化的Doctrine记录的所有版本的集合。这可能吗?我肯定可以建立一些会做,但我不知道,如果功能已经内置的。提前 感谢, 约翰我可以获取可版本化原则记录的版本集合吗?
2
A
回答
3
我敢肯定,学说(至少1.2版本)版本化行为没有按除revert()
之外,不为您的模型定义任何其他方法,允许您恢复以前版本的资源。
所以你必须自己做一切。
1
您可以在版本表上查询: Doctrine :: getTable('EntityVersions') - > findAllById($ entity_id);
gyaan:对于任何版本表,PK共同放置在版本号&版本上。不像默认的教条样式,没有代理键!
0
只是为了防止其他人绊倒在这:这是一个快速解决方案如何获取版本化的记录。 (这当然应该更好地进行内部或作为“审计日志”类的扩展实现,但对于一个快速的解决方案下面可以去任何地方。)
/**
* get collection of versioned records as array
*
* @param string $table table name without the 'Version' -suffix (e.g. 'User' instead of 'UserVersion')
* @param mixed $id simple id or array with key/value pairs for compound keys
* @return array
*/
public function getHistory($table, $ids) {
$className = $table . 'Version';
$identifiers = (array) Doctrine_Core::getTable($table)->getIdentifier();
if (count($identifiers) === 1) {
$ids = array_combine($identifiers, (array) $ids);
}
$q = Doctrine_Core::getTable($className)
->createQuery();
$conditions = array();
$values = array();
foreach ($identifiers as $id) {
if (!isset($ids[$id])) {
throw new Doctrine_Record_Exception('Primary key \'' . $id . '\' must be given to access ' . $className . '.');
}
$conditions[] = $className . '.' . $id . ' = ?';
$values[] = $ids[$id];
}
$q->where(implode(' AND ', $conditions));
$data = $q->execute($values, Doctrine_Core::HYDRATE_ARRAY);
return $data;
}
1
我在相应表-1实施的访问捷径类例如model/doctrine/ItemTable.class.php
:
public static function getHistoryInstance() {
return self::getInstance()->getTemplate('Versionable')->getAuditLog()->getTable();
}
然后从徘徊无论访问历史是这样的:
$history_collection = ItemTable::getHistoryInstance()->createQuery()
->select('id')
->execute();
(我使用的Symfony 1.4学说1.2)
相关问题
- 1. 可以在RCU锁中读取旧版本或新版本吗?
- 2. 我们可以使用MLLP版本2和HL7版本2吗?
- 3. 我可以从用户代理获取Mac OS版本吗?
- 4. 在记录错误时,我可以获得DirectX(任何版本)回调吗?
- 5. 我可以将.net程序集版本翻译成日期吗?
- 6. 如何获取最大版本记录?
- 7. 我可以获得文件图标的64x64版本吗?
- 8. TFS 2013 Express - 我可以升级到Express的许可版本吗?
- 9. 我可以从Java读取BerkeleyDB(非Java版本)文件吗?
- 10. 我们可以从App Store获取iPhone版本的应用程序版本号吗?
- 11. 可以选择Android Studio kotlin版本吗?
- 12. 可以用behat测试版本库吗?
- 13. 从哪个版本库可以获取最新版本的android-maven-plugin?
- 14. Mercurial:获取文件早期版本的非版本化副本
- 15. 我可以在Firefox 4.0中模拟以前的Firefox版本吗?
- 16. 我可以在python中使用sqlite3以后的版本吗?
- 17. 我可以检查我安装了哪个版本的OpenMP吗?
- 18. 是否可以使用批处理脚本获取OpenGL版本?
- 19. 您可以混合使用.Net的不同版本编译的程序集吗?
- 20. 获取版本可执行从Lua
- 21. 原型的可执行版本
- 22. 获取文件的两个版本的可视化差异
- 23. 我可以在Xcode中获得Unity3D引擎版本吗?以及如何根据版本进行条件编译?
- 24. 较低版本的CUDA工具包版本可能更高吗?
- 25. 您可以获得jQuery和Sizzle的精选版本吗?
- 26. Avangate ESD API可以上传我的软件发行版的最新版本吗?
- 27. 可以使用高版本的couchbase-cli来备份低版本的couchbase吗?
- 28. 使用git-svn也可以控制目录版本化
- 29. 我可以在SDL TRIDION 2011中获得以前版本的发布日期吗?
- 30. 我可以用1.11.3替换旧版本的Jquery吗?
是啊,这就是我的想法。尽管感谢您的帮助。 – jjbohn 2010-03-23 17:33:42
我在下面张贴了另一种方式。你认为这是Symfony的具体情况,并不是在纯粹的教义中可用? – Tapper 2012-07-18 09:45:41