2009-03-02 4 views
0

Je ne suis pas très familier avec le gâteau .. Donc voici mes questions .. nous développons une application sur mysql, mais il faudra peut-être déployer mssql ou oracle. Comment pouvons-nous nous assurer que nous n'aurons pas de problèmes étranges avec nos clés primaires? En mysql ce sont des colonnes AUTO INCREMENT mais IIRC en oracle vous devez utiliser des séquences ... y a-t-il un moyen d'en faire un changement transparent? Suis-je trop penser?Comment rendre la base de données de votre modèle portable dans CakePHP?

Est-ce que quelqu'un a de l'expérience avec le changement de fournisseur de base de données sur une application cakephp? des pointeurs ou des choses à garder à l'œil?

Répondre

1

Dans le fichier de configuration de la base de données Cake, vous choisissez votre pilote (voir http://book.cakephp.org/view/40/Database-Configuration). Ensuite, si vous définissez votre PK (qui sera également votre colonne A_I si vous utilisez MySQL) avec le nom de champ id, Cake gèrera automatiquement l'insertion auto_increment. Je présume (NB: n'ai pas essayé Cake w/autre chose) que Cake s'occupera des colonnes A_I dans quelque chose comme Oracle. Cake utilise sa propre couche d'abstraction DB, mais les abstractions incluses couvrent un peu et fonctionneront comme spécifié (c'est-à-dire qu'il gérera votre propre incrément automatique).

En bref, vous êtes probablement en train de trop réfléchir. Cela dit, je simulerais une petite application de gâteau, puis j'essaierais de changer de base de données (changez votre configuration de db et votre application devrait basculer automagiquement).

HTH, Travis

1

Les pratiques suivantes fonctionnent bien pour moi

J'utilise des schémas de gâteau (j'ai tendance à mettre en place 1 fichier de schéma pour chaque groupe de modèles. IE utilisateur, le rôle, le profil peut tous être dans un Fichier UsersSchema)

Jetez également un coup d'œil à l'utilisation de Debuggable.com FixturesShell - il vous permet d'importer des montages de cas de test dans la base de données en direct. Idéal pour configurer ce groupe initial d'utilisateurs et de rôles à partir du fichier de schéma. De plus, si vous définissez votre champ 'id' sur VARCHAR (36) au lieu de INT (#) cake utilisera automatiquement les identifiants de style UUID. Cela signifie que vos chances de collisions de valeur d'identification sont moindres que celles de vos données si vous devez déplacer les données vers une autre application ou un autre serveur.

Les appareils Shell a également un outil de ligne de commande pour générer UUID (vous pouvez donc les ajouter à vos enregistrements $ variables dans le dispositif d'insertion, etc.)

En résumé - Utilisez les schémas CakeSchema shell, les accessoires shell de debuggable.com et les valeurs UUID pour vos identifiants et il devrait vous donner un outil de création de structure portable, un outil d'insertion de données portable, et un format de champ d'identification portable.

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

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

Questions connexes