The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Prty::Database::Row::Object::Join - Datensatz eines Join

BASE CLASSES

DESCRIPTION

Ein Objekt der Klasse repräsentiert einen Datensatz, der über mehreren Tabellen gebildet ist.

Die DML-Operationen select, insert, update, delete werden entweder individuell implementiert oder durch Delegation an andere Klassen realisiert.

Das zugrunde liegende Select-Statement wird typischerweise als Template auf der Klassenvariable $Select definiert.

METHODS

Statement-Ermittelung

selectTemplate() - Liefere Select-Template der Klasse

Synopsis

    $tmpl = $class->selectTemplate;

Returns

Select-Template (String)

Description

Liefere das Select-Template der Klasse. Dieses ist auf der Klassenvariablen $Select definiert und enthält typischerweise Platzhalter, die bei einer Selektion durch die Selektionsskriterien ersetzt werden.

Die Einsetzung von Selektionskriterien in das Template nimmt die Methode selectStmt() vor.

Example

Beispiel für die Definition eines Select-Template auf der Klassenvariable $select:

    our $Select = <<'__SQL__';
    SELECT
        %SELECT%
    FROM
        odin.route rou
        LEFT JOIN odin.section sec
        ON rou.id = sec.route_id
        LEFT JOIN odin.passage pas
        ON sec.id = pas.section_id
        LEFT JOIN odin.passage_measseq pam
        ON pas.id = pam.passage_id
        LEFT JOIN odin.measseq mea
        ON pam.measseq_id = mea.id
    __SQL__

Die Select-Klausel ist notwendig, da das Statement sonst nicht syntaktisch korrekt gebildet ist. Die Platzhalter %WHERE%, %ORDERBY% usw. müssen nicht erscheinen, da optionale Klauseln bei entsprechenden Selektionskriterien am Ende des Statement hinzugefügt werden.

selectStmt() - Liefere Select-Statement der Klasse

Synopsis

    $stmt = $class->selectStmt($db,@select);

Returns

Select-Statement (String)

Description

Liefere ein Select-Statement der Klasse gemäß den Selektionskriterien @select. Die Selektionskriterien werden in das Muster-Statement eingesetzt (siehe selectTemplate().

Verschiedenes

cast() - Wandele Datensatz in einen Datensatz einer anderen Klasse

Synopsis

    $newRow = $row->cast($db,$newClass);

Arguments

$db

Datenbankverbindung

$newClass

Neue Datensatzklasse

Returns

Datensatz

Description

Wandele den Datensatz $row in einen Datensatz der Klasse $newClass und liefere das Resultat zurück. Es ist ein fataler Fehler, wenn der Datensatz keine zur Klasse $newClass gehörende Kolumne besitzt.

Details

Die Umwandelung umfasst die Schritte:

  1. Kopiere $row nach $newRow

  2. Schränke $newRow auf die Kolumnen von $newClass ein

  3. bless $newRow auf $newClass

AUTHOR

Frank Seitz, http://fseitz.de/