Prty::ModelCache - Verwaltung/Caching von Modell-Objekten
Prty::Hash
Instantiiere das Modell-Objekt für eine Reihe von Tabellen:
$mod = Prty::ModelCache->new($db,@types);
Liefere alle Datensätze einer Tabelle:
@rows|$tab = $mod->all($type);
Liefere Datensatz zu Primärschlüssel:
$row = $mod->lookup($type,$id);
Liefere zu einem Datensatz alle Kind-Datensätze einer Kind-Tabelle:
@rows|$tab = $mod->childs($row,$childType);
Liefere zu einem Datensatz den Eltern-Datensatz einer Eltern-Tabelle:
$row = $mod->parent($row,$parentType);
Ein Objekt der Klasse stellt einen Cache für eine Reihe von Tabellen/Views einer Datenbank dar. Mit den Methoden der Klasse kann über die Datensätze navigiert werden, wobei diese sukzessive geladen werden. Tabellen, deren Inhalt nicht zugegriffen wird, werden auch nicht geladen.
Da eine Tabelle/View beim ersten Zugriff vollständig geladen wird, ist die Klasse nicht für Tabellen mit Massendaten geeignet.
Telefonliste
Tabellen:
Person Telefon ------ ------- id id name person_id nummer
Programm:
my $mod = Prty::ModelCache->new($db, 'person', 'telefon', ); for my $per ($mod->all('person')) { printf "%s\n",$per->name; for my $tel ($mod->childs($per,'telefon')) { printf " %s\n",$tel->nummer; } } __END__ Frank Seitz 0176/78243503
Kolumnen mit Präfix
Person Telefon ------ ------- per_id tel_id per_name tel_person_id tel_nummer
my $mod = Prty::ModelCache->new($db, [person=>'per'], [telefon=>'tel'], ); for my $per ($mod->all('person')) { printf "%s\n",$per->per_name; for my $tel ($mod->childs($per,'telefon')) { printf " %s\n",$tel->tel_nummer; } } __END__ Frank Seitz 0176/78243503
$mod = $class->new($db,@types);
Instantiiere einen Cache für Modell-Objekte @types der Datenbank $db und liefere eine Referenz auf dieses Objekt zurück.
Liefere alle Datensätze vom Typ $type. Im Skalarkontext liefere ein Tabellenobjekt mit den Datensätzen.
$ent = $mod->lookup($type,$id);
Ermittele in der Tabelle $type den Datensatz mit dem Schlüsselwert $id und liefere diesen zurück. Existiert kein Datensatz mit dem Schlüsselwert $id, wird eine Exception geworfen.
Ermittele zu Datensatz $row alle Kind-Datensätze vom Typ $childType und liefere diese zurück. Im Skalarkontext liefere ein Tabellenobjekt mit diesen Datensätzen.
$par = $mod->parent($row,$parentType);
Liefere zu Datensatz $row dessen Eltern-Datensatz vom Typ $parentType.
$pk = $mod->pk($type);
Liefere den Namen der Primärschlüsselkolumne des Modell-Objekts $type. Ohne vereinbarten Kolumnenpräfix lautet der Name
id
Mit vereinbarten Kolumnenpräfix lautet der Name
<prefix>_id
$fk = $mod->fk($type,$parentType);
Liefere den Namen der Fremdschlüsselkolumne eines Modell-Objekts vom Typ $type für ein Parent-Modell-Objekt vom Typ $parentType.
Ohne vereinbarten Kolumnenpräfix für $type lautet der Name
<parentType>_id
Mit vereinbarten Kolumnenpräfix für $type lautet der Name
<prefix>_<parentType>_id
1.092
Frank Seitz, http://fseitz.de/
Copyright (C) 2016 Frank Seitz
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Prty, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Prty
CPAN shell
perl -MCPAN -e shell install Prty
For more information on module installation, please visit the detailed CPAN module installation guide.