對於其他人誰可以看這裏的利益,我會回答我的問題...
我最終什麼事做的是安裝最新版本的Propel(1.5)。 Jan Fabry(上文)提到,以前生成的模型(來自SF項目)可能存在剩餘要素,這也是我的擔憂。所以我在數據庫上運行了「反向」,並且也生成了新的模式/模型。
由於我重複使用現有的數據庫,我當然會將原始生成的模型放在手邊以供參考。我還在前一個應用程序上運行了一個phpDoc構建,包括生成的Propel模型,這是一個很好的工具,可以用來查看之前完成的工作。作爲一個'方面'的提示,我也在我的新生成的模型上運行了phpDoc,現在我有了一個'reference'doc來自我的新'custom db api',它是從Propel構建生成的...非常酷! 已經有一些模式問題,比如缺乏對ENUM類型的支持......但是在Propel的v1.6中。原始模型是Propel如何與現有數據庫一起使用的實例。當問題出現時,我預見在新模式中「手動」編輯一些條目。
Propel v1.5有一個新的'查詢'API(由Frosty Z指出),它取代(或增強)我的新應用中的'標準'和'同行'。原始代碼仍然是一個很好的模型(不是MVC模型),因爲之前數據庫如何集成到應用程序的邏輯中,但是我發現新版本的Propels'query'API將會是一個很大的幫助。我讀過Propel不支持'連接'的地方,但我看到這個版本的確存在,並且在Propel中還有許多其他新的有用的特性。非常值得注意的是,新API處理關係的方式。這些都在Propel的文檔中,我很想使用它。該數據庫對於「手動」界面來說相當大且複雜,因此Propel的「反向」功能也非常方便。
查詢像這樣的:
$Users = UsersQuery::create()
->filterByLastName($LastName)
->find(); // $Users is a PropelCollection object
return $Users;
是很「好」作爲霧Z說,並節省大量的編碼與使用Zend_Db的,或直的PHP/MySQL的,似乎不是更簡單以前的'標準','同行',方式。這段代碼來自Propel Docs,並解決了讓我在其他地方尋找解決方案的問題,有條件的發現似乎相對而言會以代碼大小增長。而且我已經可以看到根據ACL篩選結果是多麼容易。
我的答案是爲什麼我不重新使用原始模型的解釋;缺乏新方法&擔心可能會導致bug或頭痛的殘留代碼,以及爲什麼我堅持使用Propel(除了它看起來非常好的事實);我有一個工作ORM的現有示例。真的,我可以說上面的兩個答案都是我一起去的。多謝你們!
感謝您的回答。我將把這看作是一個選項,之前使用的Propel是1.4,所以聽起來很有希望。聽起來像我甚至可以在某些時候重新生成地圖。 – rhaag71 2011-03-22 17:15:18