Es scheint ein bisschen weh zu sein, meine Moose-Klassen zu haben. Dann verwenden Sie DBIx::Class, um eine Ergebnismenge zu erhalten..dann ordnen Sie meine Ergebnismenge manuell den Elchklassen zu.Gibt es eine einfache Möglichkeit, DBIx :: Class-Ergebnisse meinen benutzerdefinierten Moose-Klassen zuzuordnen?
Antwort
Sie können Elch mit DBIC kein Problem verwenden. Eigentlich MooseX ich viel Freude mit :: erklären, da ich die erweiterte Syntax finden ist sehr nützlich, wenn feste öffentliche apis Gestaltung, zum Beispiel:
use MooseX::Declare;
class MyApp::Schema::Result::Geo::Division
extends MyApp::Schema::Result {
use Locale::Geocode::Division;
__PACKAGE__->table('division');
__PACKAGE__->add_columns(
fk_territory_id => {
data_type => 'char',
size => '36',
},
division_id => {
data_type => 'char',
size => '36',
},
code => {
data_type => 'varchar',
size => '5',
},
created => {
data_type => 'datetime',
set_on_create => 1,
},
);
__PACKAGE__->set_primary_key('fk_territory_id','division_id');
__PACKAGE__->uuid_columns('division_id');
__PACKAGE__->add_unique_constraint(['fk_territory_id','code']);
__PACKAGE__->belongs_to(
territory => 'MyApp::Schema::Result::Geo::Territory',
{'foreign.territory_id' => 'self.fk_territory_id'},
);
method as_geocode_division {
Locale::Geocode::Division->new($self->code);
}
__PACKAGE__->meta->make_immutable(inline_constructor => 0);
} 1;
Wie würden Sie die Moose-Attribute deklarieren, wenn das Schema bereits von der DB definiert ist (dh, DBIx :: Class liest das Schema ein, anstatt es durch die Methodenaufrufe zu definieren, die Sie oben ausführen)? – Ether
Sie meinen * Laufzeit * Schema Laden? Ich werde nicht nett spielen. :) – hobbs
Es klingt wie Sie beschreiben genau das, was ich vor kurzem, um schrieb Moose zur Karte Attribute Werte auf Rose::DB::Object Werte (mit dem db-Objekt und Objektmanager in privaten Attributen enthalten) und umgekehrt. Ich habe ursprünglich Auslöser für jedes Moose-Attribut verwendet, um sofort auf das Rose-Objekt zu schreiben, gab aber später diesen Ansatz auf und schrieb die Werte nur bei Bedarf (d. H. Zum Zeitpunkt einer ->save()
-Operation). Ich habe es implementiert, indem ich einige Rollen und eine Zuckerklasse verwendet habe, die automatisch ein Attributmerkmal installiert hat, das "Ich bin ein Tabellenfeld" für die relevanten Attribute anzeigt.
Aber nicht tun, was ich tat - einfach DBIx::Class direkt verwenden! Die nächste Hauptversion wird sowieso in Moose umgeschrieben, also höre ich.
* Die nächste Hauptversion wird sowieso in Moose umgeschrieben, also höre ich. * Das geht schon seit Jahren. –
Matt hatte letzten Monat in der Perl Oasis eine erfinderische Rede darüber. – perigrin
Wenn Sie zwischen Moose-Klassen und einem DBIC-Schema hin und her mappen müssen, sollten Sie stattdessen einen permanenten Objektspeicher wie KiokuDB betrachten.
Sie verlieren einige Funktionen einer relationalen Datenbank, insbesondere, wenn Sie ein vorhandenes Schema haben, aber viele Funktionen erhalten, wobei die wichtigste eine stille Zuordnung zwischen dem Datenspeicher und Ihrem Objektmodell ist. Das DBI-Backend für KiokuDB ist wahrscheinlich das beste Beispiel für diese Abwägung. Die Datenbank ist stark de-normalisiert, aber das liegt daran, dass sie als Keystore funktioniert.
KiokuDB kann jedoch mit Speicher-Engines arbeiten, die für diese Art von Daten optimiert sind. Es unterstützt mehrere aktuelle NoSQL-Stars wie CouchDB und MongoDB. Es unterstützt auch die ältere Fan-Favorit BerkelyDB.
Kioku ist nicht die Antwort für jedes Problem, aber es wird sehr erfolgreich für Parking Mobility verwendet, um den gesamten Datenspeicher nahtlos zu behandeln.
+1 für mich gegen die Erwähnung von KiokuDB zu schlagen. –
- 1. Gibt es eine Möglichkeit, unveränderlichen Entitäten im Entitätsrahmen zuzuordnen?
- 2. Gibt es eine Möglichkeit, einen Iterator seinem Container zuzuordnen?
- 3. Gibt es eine einfache Möglichkeit, eine vollständige P4-Änderungsliste wiederherzustellen?
- 4. Gibt es eine einfache Möglichkeit, eine Tabelle in Prozedur umzubenennen?
- 5. Gibt es eine einfache Möglichkeit, eine QProgressBar anzupassen?
- 6. Gibt es eine einfache Histogrammfunktion?
- 7. Gibt es eine Möglichkeit, ein Tag im Flex zu Komponenten in mehreren Verzeichnissen zuzuordnen?
- 8. Gibt es eine einfache Möglichkeit, Kriterien in HQL zu konvertieren?
- 9. Gibt es eine einfache Möglichkeit, jshint mit Netbeans zu integrieren?
- 10. Gibt es eine einfache Möglichkeit, InternalsVisibleToAttribute zu verwenden?
- 11. Gibt es eine einfache Möglichkeit, Mediendateien in .NET abzuspielen?
- 12. Gibt es eine einfache Möglichkeit, Routing in JSF zu implementieren?
- 13. Gibt es eine einfache Möglichkeit, Bilder schräg zu stellen?
- 14. Gibt es eine einfache Möglichkeit, ein ASP.NET-Formular zu löschen?
- 15. Gibt es eine einfache Möglichkeit, JavaScript in WebStorm zu bewerten?
- 16. Gibt es eine einfache Möglichkeit, zwei System.Drawing.Color-Werte zu mischen?
- 17. Gibt es eine einfache Möglichkeit, boolesche Werte in xslt
- 18. Gibt es eine einfache Möglichkeit, einen Code TextBox zu erstellen?
- 19. Gibt es eine einfache Möglichkeit, Openshift Autoscaling zu testen?
- 20. Gibt es eine einfache Möglichkeit, Benutzer von Facebook zu erhalten?
- 21. Gibt es eine einfache Möglichkeit, Gulture mit Django zu verwenden?
- 22. Gibt es eine einfache Möglichkeit, mein dotnet Windows Formular auszudrucken?
- 23. Gibt es eine einfache Möglichkeit, mit Basscss zu beginnen?
- 24. Gibt es eine einfache Möglichkeit, Bildabmessungen in Ruby zu erhalten?
- 25. Gibt es eine einfache Möglichkeit, das FIRST LinqToXML-Ergebnis zurückzugeben?
- 26. Gibt es eine einfache Möglichkeit zum Bearbeiten/Ändern einer UILocalNotification
- 27. Gibt es eine einfache Möglichkeit, Hoptoad mit CakePHP zu verwenden?
- 28. Gibt es eine einfache Möglichkeit, mit Open MPI zu klingeln?
- 29. Gibt es eine einfache Möglichkeit, den Flex Preloader zu verstecken?
- 30. Gibt es eine einfache Möglichkeit, das Alphabet programmatisch zu erhalten?
Warum ordnen Sie die Ergebnisse den Moose-Klassen zu? Warum nicht die DBIx :: Class-Klassen direkt verwenden? – friedo