2009-03-02 3 views
0

Ich bin nicht sehr vertraut mit Kuchen .. Also hier ist meine Fragen .. wir entwickeln eine Anwendung auf mysql, aber es muss schließlich zu mssql oder Oracle bereitstellen. Wie stellen wir sicher, dass wir keine seltsamen Probleme mit unseren Primärschlüsseln haben? In mysql sind sie AUTO INCREMENT Spalten aber IIRC in Orakel müssen Sie Sequenzen verwenden ... gibt es eine Möglichkeit, dies zu einer transparenten Änderung zu machen? Bin ich darüber nachgedacht?Wie lässt sich die Datenbank Ihres Modells in CakePHP portieren?

Hat jemand Erfahrung mit dem Wechsel von Datenbankanbietern auf einer CakePHP App? irgendwelche Hinweise oder Dinge, die man im Auge behalten sollte?

Antwort

1

In der Cake-Datenbank-Konfigurationsdatei wählen Sie Ihren Treiber (siehe http://book.cakephp.org/view/40/Database-Configuration). Wenn Sie dann Ihren PK (der bei Verwendung von MySQL auch Ihre A_I-Spalte ist) mit dem Feldnamen id setzen, wird Cake automatisch die Einfügung auto_increment behandeln. Ich nehme an (NB: habe Cake nicht mit etwas anderem probiert), dass Cake sich um A_I Spalten in so etwas wie Oracle kümmern wird.

Cake verwendet eine eigene DB-Abstraktionsschicht - aber die enthaltenen Abstraktionen decken ziemlich viel ab, und es wird wie angegeben funktionieren (d. H., Es behandelt Ihre Autoinkrementierung für Sie).

Kurz gesagt, Sie übertreiben wahrscheinlich. Das heißt, ich würde eine kleine Kuchen-App mock machen, dann versuchen, Datenbanken dahinter zu wechseln (ändern Sie Ihre db-Konfiguration und Ihre App sollte automatisch wechseln).

HTH, Travis

1

Die folgenden Praktiken große Arbeit für mich

verwende ich Kuchen-Schemata (Ich neige dazu, für jede Gruppe von Modellen 1 Schemadatei einzurichten. IE Benutzer, Rolle, Profil alles in einem sein könnte UsersSchema-Datei)

Sehen Sie sich auch die debuggabable.com FixturesShell an - Sie können damit Testfall-Fixtures in die Live-Datenbank importieren. Ideal zum Einrichten dieser ersten Gruppe von Benutzern und Rollen aus der Schemadatei.

Wenn Sie Ihr ID-Feld auf VARCHAR (36) anstelle von INT (#) setzen, werden automatisch UUID-IDs verwendet. Dies bedeutet, dass Ihre Daten mit ID-Wert-Kollisionen weniger wahrscheinlich sind, wenn Sie die Daten zu einer anderen Anwendung oder einem anderen Server verschieben müssen.

Die Leuchten Shell hat auch ein Kommandozeilen-Tool für UUID zu erzeugen (so können Sie diese in Ihre $ Aufzeichnungen Variable in der Halterung zum Einsetzen usw. hinzufügen)

Zusammengefasst - Verwenden Sie die CakeSchema Schemata Shell, die Geräte Shell von debuggable.com und UUID-Werte für Ihre IDs und es sollte Ihnen ein tragbares Strukturerstellungswerkzeug, ein tragbares Dateneinfügewerkzeug und ein tragbares ID-Feldformat geben.

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

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

Verwandte Themen