NAME
Quiq::ModelCache - Verwaltung/Caching von Modell-Objekten
BASE CLASS
SYNOPSIS
Instantiiere das Modell-Objekt für eine Reihe von Tabellen:
$mod = Quiq::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);
DESCRIPTION
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.
ACHTUNG: Da eine Tabelle/View beim ersten Zugriff vollständig geladen wird, ist die Klasse nicht für Tabellen mit Massendaten geeignet.
EXAMPLES
Telefonliste
Tabellen:
Person Telefon
------ -------
id id
name person_id
nummer
Programm:
my $mod = Quiq::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
Tabellen:
Person Telefon
------ -------
per_id tel_id
per_name tel_person_id
tel_nummer
Programm:
my $mod = Quiq::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
METHODS
Konstruktor
new() - Konstruktor
Synopsis
$mod = $class->new($db,@types);
Description
Instantiiere einen Cache für Modell-Objekte @types der Datenbank $db und liefere eine Referenz auf dieses Objekt zurück.
Navigation
all() - Entitätsmenge
Synopsis
@rows|$tab = $mod->all($type);
Description
Liefere alle Datensätze vom Typ $type. Im Skalarkontext liefere ein Tabellenobjekt mit den Datensätzen.
lookup() - Datensatz zu Schlüsselwert
Synopsis
$ent = $mod->lookup($type,$id);
Description
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.
childs() - Kind-Datensätze eines Datensatzes
Synopsis
@rows|$tab = $mod->childs($row,$childType);
Description
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.
parent() - Eltern-Datensatz eines Datensatzes
Synopsis
$par = $mod->parent($row,$parentType);
Description
Liefere zu Datensatz $row dessen Eltern-Datensatz vom Typ $parentType.
Kolumnen
pk() - Name Primärschlüsselkolumne
Synopsis
$pk = $mod->pk($type);
Description
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() - Name Fremdschlüsselkolumne
Synopsis
$fk = $mod->fk($type,$parentType);
Description
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
VERSION
1.206
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2022 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.