2009-03-02 68 views
0

我對蛋糕不是很熟悉..所以這裏是我的問題..我們正在開發一個關於mysql的應用程序,但它最終可能需要部署到mssql或oracle。我們如何確保我們的主鍵不會出現奇怪的問題?在MySQL中,它們是AUTO INCREMENT列,但是在IIR中需要使用序列... IIRC有沒有一種方法可以使此變爲透明更改?我在想這個嗎?如何使您的模型數據庫在CakePHP中可移植?

有沒有人在cakephp應用上切換數據庫供應商的經驗?任何指針或事情要留意?

回答

1

在Cake數據庫配置文件中,選擇您的驅動程序(請參閱http://book.cakephp.org/view/40/Database-Configuration)。然後,如果您使用字段名稱id設置您的PK(這也將是您的A_I列,如果使用MySQL),Cake將自動處理auto_increment插入。我會假定(注意:還沒有嘗試Cake w /其他),Cake會照顧A_I列,像Oracle。

Cake使用自己的數據庫抽象層 - 但是包含的抽象涵蓋了很多,它將按照指定的方式執行(即它會爲您處理自動增加的東西)。

總之,你可能會過度。也就是說,我會模擬一個小蛋糕應用程序,然後嘗試切換數據庫(改變你的數據庫配置,你的應用程序應該自動切換)。

HTH, 特拉維斯

1

下面的練習,我

我用蛋糕模式(我傾向於設立1個架構文件爲每個組的模型工作得很好,IE用戶,角色,個人資料可能全部是在一個UsersSchema文件)

另請參閱使用debuggable.com FixturesShell - 它允許您將測試用例夾具導入到實時數據庫中。非常適合從架構文件中設置最初的一組用戶和角色。另外,如果將'id'字段設置爲VARCHAR(36)而不是INT(#),Cake將自動使用UUID樣式ID。這意味着如果您需要將數據移動到其他應用程序或服務器,則您的數據具有ID值衝突的可能性更低。

的燈具外殼還具有產生的UUID(這樣你就可以將它們添加到您的$記錄在夾具變量插入等)

總之,一個命令行工具 - 使用CakeSchema架構外殼,燈具來自debuggable.com的shell和你的id的UUID值,它應該給你一個可移植的結構創建工具,一個可移植的數據插入工具和一個可移植的id字段格式。

http://github.com/felixge/debuggable-scraps/tree/fd0e5ad625cb21f5ba16e6b186821a5774089ac7/cakephp/shells/fixtures

http://api.cakephp.org/class/schema-shell