NAME

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

BASE CLASS

Quiq::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;

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

VERSION

1.132

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2019 Frank Seitz

LICENSE

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