所以我試圖找到一種方法來獲取可版本化的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. 我的代碼可以獲取Google地圖API版本號嗎?
- 2. 可以在RCU鎖中讀取舊版本或新版本嗎?
- 3. 我們可以使用MLLP版本2和HL7版本2嗎?
- 4. 我可以從用戶代理獲取Mac OS版本嗎?
- 5. 在記錄錯誤時,我可以獲得DirectX(任何版本)回調嗎?
- 6. 我可以將.net程序集版本翻譯成日期嗎?
- 7. 我可以獲得文件圖標的64x64版本嗎?
- 8. 如何獲取最大版本記錄?
- 9. oracle客戶端版本可以優於服務器版本嗎?
- 10. TFS 2013 Express - 我可以升級到Express的許可版本嗎?
- 11. 可以告訴我CSR版本和證書版本的區別嗎?
- 12. 我可以從Serena將版本歷史記錄導入Team Foundation Server嗎?
- 13. 我可以從Java讀取BerkeleyDB(非Java版本)文件嗎?
- 14. 可以用behat測試版本庫嗎?
- 15. 可以選擇Android Studio kotlin版本嗎?
- 16. Heroku可以用作版本控制嗎?
- 17. 我們可以從App Store獲取iPhone版本的應用程序版本號嗎?
- 18. 從哪個版本庫可以獲取最新版本的android-maven-plugin?
- 19. 我可以從VIM交換文件中獲得版本化恢復嗎?
- 20. 我可以通過MSBuild屬性獲取確切的Visual Studio版本嗎?
- 21. 我可以在Firefox 4.0中模擬以前的Firefox版本嗎?
- 22. 我可以在python中使用sqlite3以後的版本嗎?
- 23. 我可以檢查我安裝了哪個版本的OpenMP嗎?
- 24. 我可以使用腳本文件自動化產品版本嗎?
- 25. 您可以混合使用.Net的不同版本編譯的程序集嗎?
- 26. 是否可以使用批處理腳本獲取OpenGL版本?
- 27. 獲取版本可執行從Lua
- 28. 原型的可執行版本
- 29. 我可以使用哪些nginx版本?
- 30. 較低版本的CUDA工具包版本可能更高嗎?
是啊,這就是我的想法。儘管感謝您的幫助。 – jjbohn 2010-03-23 17:33:42
我在下面張貼了另一種方式。你認爲這是Symfony的具體情況,並不是在純粹的教義中可用? – Tapper 2012-07-18 09:45:41