Frank Seitz
and 1 contributors

NAME

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

BASE CLASS

Prty::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.

values() - Liefere Kolumnenwerte als Liste oder Hash

Synopsis

    @vals|$valA = $tab->values($key,@opt);
    %vals|$valH = $tab->values($key,@opt,-hash=>1);

Options

-distinct => $bool (Default: 0)

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.

-hash => $bool (Default: 0)

Liefere einen Hash bzw. eine Hashreferenz (Prty::Hash) mit den Kolumnenwerten als Schlüssel und 1 als Wert.

-notNull => $bool (Default: 0)

Ignoriere Nullwerte, d.h. nimm sie nicht ins Resultat auf.

index() - Indiziere Tabelle nach Kolumne(n)

Synopsis

    %idx|$idxH = $tab->index(@keys);

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 mit einem senkrechten Strich ('|') getrennt.

min() - Numerisches Minimum der Kolumne

Synopsis

    $min = $tab->min($key);

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);

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

Arguments

$key

Attributname.

$val

Attributwert.

normalizeNumber() - Normalisiere Zahldarstellung

Synopsis

    $tab->normalizeNumber(@titles);

Alias

fixNumber()

Description

Normalisiere die Zahldarstellung der genannten Kolumnen. D.h. entferne unnötige Nullen und forciere als Dezimaltrennzeichen einen Punkt (anstelle eines Komma).

Returns

nichts

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);

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.

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.

selectParents() - Selektiere Parent-Datensätze

Synopsis

    @rows|$rowT = $tab->selectParents($db,$foreignKeyColumn,
        $parentTable,$primaryKeyColumn,@opt);

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.

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.

selectParentRows() - Selektiere Datensätze via Schlüsselkolumne

Synopsis

    @rows|$rowT = $tab->selectParentRows($db,$fkTitle,$pClass,@select);

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.

Returns

Array-Kontext

Liste von Datensätzen

Skalar-Kontext

Tabellenobjekt (Prty::Database::ResultSet::Object)

Example

Bestimme Informationen zu Route, Abschnitt, Fahrt, Fahrt_Parameter und Parameter zu der Kombination aus Fahrten und Parametern:

     1: my @pas_id = $req->getArray('pas_id');
     2: my @mea_id = $req->getArray('mea_id');
     3: 
     4: my $tab = FerryBox::Model::Join::RouSecPasPamMea->select($db2,
     5:     -select=>'rou.id rou_id','sec.id sec_id','pas.id pas_id',
     6:         'pam.id pam_id','mea.id mea_id',
     7:     -where,
     8:         'pas.id'=>['IN',@pas_id],
     9:         'mea.id'=>['IN',@mea_id],
    10: );
    11: 
    12: my $rouT = $tab->selectParentRows($db2,
    13:     rou_id=>'FerryBox::Model::Table::Route',
    14:     -select=>qw/id name/,
    15: );
    16: 
    17: my $secT = $tab->selectParentRows($db2,
    18:     sec_id=>'FerryBox::Model::Table::Section',
    19:     -select=>qw/id route_id secname/,
    20: );
    21: 
    22: my $pasT = $tab->selectParentRows($db2,
    23:     pas_id=>'FerryBox::Model::Table::Passage',
    24:     -select=>qw/id section_id starttime/,
    25: );
    26: 
    27: my $pamT = $tab->selectParentRows($db2,
    28:     pam_id=>'FerryBox::Model::Table::Passage_Measseq',
    29:     -select=>qw/id passage_id measseq_id/,
    30: );
    31: 
    32: my $meaT = $tab->selectParentRows($db2,
    33:     mea_id=>'FerryBox::Model::Table::Measseq',
    34:     -select=>qw/id route_id meas/,
    35: );

VERSION

1.108

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2017 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.