我對蛋糕不是很熟悉..所以這裏是我的問題..我們正在開發一個關於mysql的應用程序,但它最終可能需要部署到mssql或oracle。我們如何確保我們的主鍵不會出現奇怪的問題?在MySQL中,它們是AUTO INCREMENT列,但是在IIR中需要使用序列... IIRC有沒有一種方法可以使此變爲透明更改?我在想這個嗎?如何使您的模型數據庫在CakePHP中可移植?
有沒有人在cakephp應用上切換數據庫供應商的經驗?任何指針或事情要留意?
我對蛋糕不是很熟悉..所以這裏是我的問題..我們正在開發一個關於mysql的應用程序,但它最終可能需要部署到mssql或oracle。我們如何確保我們的主鍵不會出現奇怪的問題?在MySQL中,它們是AUTO INCREMENT列,但是在IIR中需要使用序列... IIRC有沒有一種方法可以使此變爲透明更改?我在想這個嗎?如何使您的模型數據庫在CakePHP中可移植?
有沒有人在cakephp應用上切換數據庫供應商的經驗?任何指針或事情要留意?
在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, 特拉維斯
你需要使用「蛋糕架構」來管理您的數據庫。當你創建了數據庫,這個將處理所有的DB具體的東西。
http://book.cakephp.org/view/735/Generating-and-using-Schema-files
下面的練習,我
我用蛋糕模式(我傾向於設立1個架構文件爲每個組的模型工作得很好,IE用戶,角色,個人資料可能全部是在一個UsersSchema文件)
另請參閱使用debuggable.com FixturesShell - 它允許您將測試用例夾具導入到實時數據庫中。非常適合從架構文件中設置最初的一組用戶和角色。另外,如果將'id'字段設置爲VARCHAR(36)而不是INT(#),Cake將自動使用UUID樣式ID。這意味着如果您需要將數據移動到其他應用程序或服務器,則您的數據具有ID值衝突的可能性更低。
的燈具外殼還具有產生的UUID(這樣你就可以將它們添加到您的$記錄在夾具變量插入等)
總之,一個命令行工具 - 使用CakeSchema架構外殼,燈具來自debuggable.com的shell和你的id的UUID值,它應該給你一個可移植的結構創建工具,一個可移植的數據插入工具和一個可移植的id字段格式。