Quiq::Database::ResultSet::Object - Liste von Datensätzen in Objekt-Repräsentation
Quiq::Database::ResultSet
Ein Objekt der Klasse repräsentiert eine Liste von gleichartigen Datensätzen in Objekt-Repräsentation.
$row = $tab->lookupSub($key=>$val);
Durchsuche die Tabelle nach dem ersten Datensatz, dessen Attribut $key den Wert $val besitzt und liefere diesen zurück. Erfüllt kein Datensatz das Kriterium, liefere undef.
@vals|$valA = $tab->values($key,@opt); %vals|$valH = $tab->values($key,@opt,-hash=>1);
Liefere in der Resultatliste nur verschiedene Kolumenwerte. Wird ein Hash geliefert, ist dies zwangsläufig der Fall. Der Wert findet sich in der Resultatliste an der Stelle seines ersten Auftretens.
Liefere einen Hash bzw. eine Hashreferenz (Quiq::Hash) mit den Kolumnenwerten als Schlüssel und 1 als Wert.
Ignoriere Nullwerte, d.h. nimm sie nicht ins Resultat auf.
%idx|$idxH = $tab->index(@keys,@opts);
Sollte auf 0 gesetzt werden, wenn die @keys nicht eindeutig sind. Dann ist der Hashwert nicht die jeweilige Row, sondern eine Referenz auf ein Array von Rows (auch wenn nur eine Row enthalten ist).
Generiere einen Hash mit den Werten der Kolumen @keys als Schlüssel und mit dem Datensatz als Wert. Im skalaren Kontext liefere eine Referenz auf den Hash.
Wird der Index über mehreren Keys gebildet, werden die einzelnen Werte im Hash mit einem senkrechten Strich ('|') getrennt.
$min = $tab->min($key);
$len = $tab->maxLength($key); @len = $tab->maxLength(@keys);
$max = $tab->max($key);
$min = $tab->minStr($key);
$max = $tab->maxStr($key);
$tab->sort($sub);
Sortiere die Datensätze gemäß der anonymen Sortierfunktion $sub.
ACHTUNG: Die Sortierfunktion muss mit Prototype ($$) vereinbart werden, damit die Elemente per Parameter und nicht mittels der globalen Variablen $a und $b übergeben werden. Denn die globalen Variablen befinden sich in einem anderen Package als dem, in dem die Sortierfunktion aufgerufen wird. Für eine korrekte Definition siehe Beispiel.
$tab->sort(sub ($$) { my ($a,$b) = @_; uc($a->pfad) cmp uc($b->pfad); });
$tab->absorbModifications;
nichts
$row->absorbModifications()
$tab->addAttribute($key); $tab->addAttribute($key=>$val);
Attributname.
Attributwert.
Füge Attribut $key mit Wert $val zu allen Datensätzen der Ergebnismenge hinzu. Ist $val nicht angegeben, setze den Wert auf den Nullwert (Leerstring).
$tab->normalizeNumber(@titles);
fixNumber()
Normalisiere die Zahldarstellung der genannten Kolumnen. D.h. entferne unnötige Nullen und forciere als Dezimaltrennzeichen einen Punkt (anstelle eines Komma).
$tab->addChildType($type); $tab->addChildType($type,$rowClass,\@titles);
Füge Kind-Datensatz-Typ $type mit Datensatz-Klasse $rowClass und den Kolumnentiteln @titles zu allen Datensätzen des ResultSet $tab hinzu.
Findet die Verknüfung zwischen den Datensätzen des ResultSet selbst statt, müssen $rowClass und \@titles nicht angegeben werden. Es werden dann die Angaben aus $tab genommen.
@rows|$rowT = $tab->selectChilds($db,$primaryKeyColumn, $foreignTable,$foreignKeyColumn,@opt);
Bezeichner für den Satz an Kind-Objekten.
Select-Optionen, die der Selektion der Kinddatensätze hinzugefügt werden.
Selektiere alle Datensätze der Tabelle $foreignTable, deren Kolumne $foreignKeyColumn auf die Kolumne $primaryKeyColumn verweist und liefere diese zurück.
Die Kind-Datensätze werden ihren Eltern-Datensätzen zugeordnet und können per
@childRows = $row->childs("$foreignTable,$foreignKeyColumn");
oder
$childRowT = $row->childs("$foreignTable,$foreignKeyColumn");
abgefragt werden. Z.B.
-select=>@titles oder -oderBy=>@titles
Mittels der Option -type=>$type kann ein anderer Typbezeichner anstelle von "$foreignTable,$foreignKeyColumn" für den Satz an Kinddatensätzen vereinbart werden.
-type=>$type
@rows|$rowT = $tab->selectParents($db,$foreignKeyColumn, $parentTable,$primaryKeyColumn,@opt);
Bezeichner für den Parent-Datensatz beim Child-Datensatz.
Select-Optionen, die der Selektion der Parent-Datensatzes hinzugefügt werden.
Selektiere alle Datensätze der Tabelle $parentTable, auf die von der Kolumne $foreignKeyColumn aller in Tabelle $tab enthaltenen Datensätze verwiesen wird und liefere diese zurück.
Der Parent-Datensatz wird jeweils seinem Kind-Datensatz zugeordnet und kann per
$parentRow = $row->getParent($foreignKeyColumn);
abgefragt werden.
Mittels der Option -type=>$type kann ein anderer Typbezeichner anstelle von "$foreignKeyColumn" für den Parent-Datensatz vereinbart werden.
@rows|$rowT = $tab->selectParentRows($db,$fkTitle,$pClass,@select);
Liste von Datensätzen
Tabellenobjekt (Quiq::Database::ResultSet::Object)
Die Methode ermöglicht es, Fremschlüsselverweise einer Selektion durch effiziente Nachselektion aufzulösen.
Die Methode selektiert die Elterndatensätze der Tabellen-Klasse $pClass zu den Fremdschlüsselwerten der Kolumne $fkTitle und den zusätzlichen Selektionsdirektiven @select. Die Selektionsdirektiven sind typischerweise -select und -orderBy.
$pClass
$fkTitle
@select
-select
-orderBy
Die Klasse $pClass muss eine Tabellenklasse sein, denn nur diese definiert eine Primäschlüsselkolumne.
Bestimme Informationen zu Route, Abschnitt, Fahrt, Fahrt_Parameter und Parameter zu der Kombination aus Fahrten und Parametern:
my @pas_id = $req->getArray('pas_id'); my @mea_id = $req->getArray('mea_id'); my $tab = FerryBox::Model::Join::RouSecPasPamMea->select($db2, -select => 'rou.id rou_id','sec.id sec_id','pas.id pas_id', 'pam.id pam_id','mea.id mea_id', -where, 'pas.id' => ['IN',@pas_id], 'mea.id' => ['IN',@mea_id], ); my $rouT = $tab->selectParentRows($db2, rou_id => 'FerryBox::Model::Table::Route', -select => qw/id name/, ); my $secT = $tab->selectParentRows($db2, sec_id => 'FerryBox::Model::Table::Section', -select => qw/id route_id secname/, ); my $pasT = $tab->selectParentRows($db2, pas_id => 'FerryBox::Model::Table::Passage', -select => qw/id section_id starttime/, ); my $pamT = $tab->selectParentRows($db2, pam_id => 'FerryBox::Model::Table::Passage_Measseq', -select => qw/id passage_id measseq_id/, ); my $meaT = $tab->selectParentRows($db2, mea_id => 'FerryBox::Model::Table::Measseq', -select => qw/id route_id meas/, );
1.163
Frank Seitz, http://fseitz.de/
Copyright (C) 2019 Frank Seitz
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Quiq, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Quiq
CPAN shell
perl -MCPAN -e shell install Quiq
For more information on module installation, please visit the detailed CPAN module installation guide.