NAME

Quiq::Database::ResultSet::Object - Liste von Datensätzen in Objekt-Repräsentation

BASE CLASS

Quiq::Database::ResultSet

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

$key

Attributname.

$val

Attributwert.

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.222

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.