2009-03-02 9 views
0

私はケーキに慣れていません。だから私の質問です。私たちはmysqlでアプリケーションを開発していますが、最終的にはmssqlやoracleにデプロイする必要があります。私たちが主キーで奇妙な問題を起こさないようにするにはどうすればよいですか? mysqlにはAUTO INCREMENTカラムがありますが、oracleではIIRCでシーケンスを使用する必要があります。これを透明な変更にする方法はありますか?私はそれを考えていますか?あなたのモデルのデータベースをCakePHPでどのように移植可能にするのですか?

誰でもcakephpアプリケーションでデータベースベンダーを切り替える経験がありますか?目を覚ますためのポインタやものは何ですか?

答えて

1

Cakeデータベースの設定ファイルで、ドライバを選択します(http://book.cakephp.org/view/40/Database-Configurationを参照)。次に、フィールド名がidのPK(MySQLを使用する場合はA_Iカラムになります)を設定すると、Cakeは自動的にauto_incrementの挿入を処理します。私は、CakeがOracleのようなものでA_Iカラムを処理することを(NB:Cakeとは何かを試していない)と推測します。

Cakeは独自のDB抽象化レイヤーを使用しますが、インクルードされた抽象化レイヤーは非常に多く、指定されたとおりに動作します。

要するに、あなたはおそらく考えすぎです。それは、私は少しのケーキアプリを模倣し、それからデータベースを切り替えることを試みると思います(あなたのdb設定を変更し、あなたのアプリは自動的に切り替えるべきです)。あなたのデータベースを作成するときに

HTH、あなたのDBを管理するために「ケーキのスキーマ」を使用している必要があり トラビス

1

次プラクティスは私のために素晴らしい仕事

私はケーキのスキーマ(私はモデルのグループごとに1つのスキーマファイルを設定する傾向がある。IEユーザー、役割を使用し、プロファイルは全て1であるかもしれませんUsersSchemaファイル)

また、debuggable.com FixturesShellを使用して、ライブデータベースにテストケースのフィクスチャをインポートすることもできます。スキーマファイルからユーザーとロールの最初のグループを設定するのに適しています。

また、 'id'フィールドをINT(#)ではなくVARCHAR(36)に設定すると、cakeは自動的にUUIDスタイルのIDを使用します。これは、データを別のアプリケーションまたはサーバーに移動する必要がある場合に、ID値の衝突が発生した場合、FAR FARのデータのチャンスが低下することを意味します。 CakeSchemaスキーマは、備品シェル使用 - 備品もシェル

は要するに

(あなたが挿入などのための治具で変数あなたの$レコードに追加することができます)UUIDを生成するためのコマンドラインツールを持っていますあなたのIDのdebuggable.comとUUIDの値からシェルを作成すると、移植可能な構造体作成ツール、移植可能なデータ挿入ツール、移植可能なIDフィールドの形式が得られるはずです。

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

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

関連する問題