NAME
Quiq::Database::Row::Object::Join - Datensatz eines Join
BASE CLASS
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 Datensatz einer anderen Klasse
Synopsis
$newRow = $row->cast($db,$newClass);
Arguments
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:
Kopiere $row nach $newRow
Schränke $newRow auf die Kolumnen von $newClass ein
bless $newRow auf $newClass
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.