NAME
Quiq::Database::ResultSet::Object - Liste von Datensätzen in Objekt-Repräsentation
BASE CLASS
DESCRIPTION
Ein Objekt der Klasse repräsentiert eine Liste von gleichartigen Datensätzen in Objekt-Repräsentation.
METHODS
Subklassenfunktionalität
lookupSub() - Suche Datensatz
Synopsis
$row = $tab->lookupSub($key=>$val);
Description
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.
index() - Indiziere Tabelle nach Kolumne(n)
Synopsis
%idx|$idxH = $tab->index(@keys,@opts);
Options
- -unique => $bool (Default: 1)
-
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).
Description
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() - Numerisches Minimum der Kolumne
Synopsis
$min = $tab->min($key);
maxLength() - Maximale Länge der Kolumnenwerte
Synopsis
$len = $tab->maxLength($key);
@len = $tab->maxLength(@keys);
max() - Numerisches Maximum der Kolumne
Synopsis
$max = $tab->max($key);
minStr() - Alphaumerisches Minimum der Kolumne
Synopsis
$min = $tab->minStr($key);
maxStr() - Alphanumerisches Maximum der Kolumne
Synopsis
$max = $tab->maxStr($key);
Verschiedenes
sort() - Sortiere Datensätze
Synopsis
$tab->sort($sub);
Description
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.
Example
$tab->sort(sub ($$) {
my ($a,$b) = @_;
uc($a->pfad) cmp uc($b->pfad);
});
absorbModifications() - Absorbiere Datensatz-Änderungen
Synopsis
$tab->absorbModifications;
Returns
nichts
See Also
$row->absorbModifications()
addAttribute() - Füge Attribut zu allen Datensätzen hinzu
Synopsis
$tab->addAttribute($key);
$tab->addAttribute($key=>$val);
Arguments
Description
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).
normalizeNumber() - Normalisiere Zahldarstellung
Synopsis
$tab->normalizeNumber(@titles);
Alias
fixNumber()
Returns
nichts
Description
Normalisiere die Zahldarstellung der genannten Kolumnen. D.h. entferne unnötige Nullen und forciere als Dezimaltrennzeichen einen Punkt (anstelle eines Komma).
addChildType() - Füge Kind-Datensatz-Typ zu allen Datensätzen hinzu
Synopsis
$tab->addChildType($type);
$tab->addChildType($type,$rowClass,\@titles);
Description
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.
selectChilds() - Selektiere Kind-Datensätze
Synopsis
@rows|$rowT = $tab->selectChilds($db,$primaryKeyColumn,
$foreignTable,$foreignKeyColumn,@opt);
Options
- -type => $type (Default: "$foreignTable.$foreignKeyColumn")
-
Bezeichner für den Satz an Kind-Objekten.
- Select-Optionen
-
Select-Optionen, die der Selektion der Kinddatensätze hinzugefügt werden.
Description
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.
selectParents() - Selektiere Parent-Datensätze
Synopsis
@rows|$rowT = $tab->selectParents($db,$foreignKeyColumn,
$parentTable,$primaryKeyColumn,@opt);
Options
- -type => $type (Default: $foreignKeyColumn)
-
Bezeichner für den Parent-Datensatz beim Child-Datensatz.
- Select-Optionen
-
Select-Optionen, die der Selektion der Parent-Datensatzes hinzugefügt werden.
Description
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.
selectParentRows() - Selektiere Datensätze via Schlüsselkolumne
Synopsis
@rows|$rowT = $tab->selectParentRows($db,$fkTitle,$pClass,@select);
Returns
- Array-Kontext
-
Liste von Datensätzen
- Skalar-Kontext
-
Tabellenobjekt (Quiq::Database::ResultSet::Object)
Description
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
.
Die Klasse $pClass
muss eine Tabellenklasse sein, denn nur diese definiert eine Primäschlüsselkolumne.
Example
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/,
);
VERSION
1.220
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2024 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.