Frank Seitz
and 1 contributors

NAME

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

BASE CLASS

Prty::Database::Row::Object

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;

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.

Returns

Select-Template (String)

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

Description

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

Returns

Select-Statement (String)

Verschiedenes

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

Synopsis

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

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.

Arguments

$db

Datenbankverbindung

$newClass

Neue Datensatzklasse

Returns

Datensatz

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

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.