質問

私はケーキにあまり馴染みがありません。だからここに私の質問があります。mysqlでアプリを開発していますが、最終的にmssqlまたはoracleにデプロイする必要があるかもしれません。主キーに奇妙な問題が発生しないようにするにはどうすればよいですか? mysqlではAUTO INCREMENTカラムですが、OracleではIIRCでシーケンスを使用する必要があります...これを透過的な変更にする方法はありますか?考えすぎですか?

cakephpアプリでデータベースベンダーを切り替える経験はありますか?目を光らせておくべきポインターや物はありますか?

役に立ちましたか?

解決

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、 トラビス

他のヒント

次のプラクティスは私に最適です

ケーキスキーマを使用します(モデルのグループごとに1つのスキーマファイルを設定する傾向があります。つまり、ユーザー、ロール、プロファイルはすべて1つのUsersSchemaファイルにあります)

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

また、 'id'フィールドをINT(#)ではなくVARCHAR(36)に設定すると、cakeは自動的にUUIDスタイルのIDを使用します。これは、データを別のアプリケーションまたはサーバーに移動する必要がある場合、データがid値の衝突を起こすFAR FARの可能性が低いことを意味します。

フィクスチャシェルには、uuidを生成するためのコマンドラインツールもあります(したがって、それらをフィクスチャの$ records変数に追加して挿入することができます)。

概要-CakeSchemaスキーマシェル、debuggable.comのフィクスチャシェル、およびIDのUUID値を使用すると、ポータブルな構造作成ツール、ポータブルなデータ挿入ツール、およびポータブルなIDフィールド形式が提供されます。

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

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

「ケーキスキーマ」を使用する必要があります。データベースを管理します。これにより、データベースの作成時にすべてのDB固有のものが処理されます。

http://book.cakephp.org/view / 735 / Generating-and-using-Schema-files

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top