Prty::Database::Row::Object::Join - Datensatz eines Join
Prty::Database::Row::Object
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.
select
insert
update
delete
Das zugrunde liegende Select-Statement wird typischerweise als Template auf der Klassenvariable $Select definiert.
$Select
$tmpl = $class->selectTemplate;
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.
Select-Template (String)
Beispiel für die Definition eines Select-Template auf der Klassenvariable $select:
$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.
%WHERE%
%ORDERBY%
$stmt = $class->selectStmt($db,@select);
Liefere ein Select-Statement der Klasse gemäß den Selektionskriterien @select. Die Selektionskriterien werden in das Muster-Statement eingesetzt (siehe "selectTemplate"().
@select
Select-Statement (String)
$newRow = $row->cast($db,$newClass);
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.
Datenbankverbindung
Neue Datensatzklasse
Datensatz
Die Umwandelung umfasst die Schritte:
Kopiere $row nach $newRow
Schränke $newRow auf die Kolumnen von $newClass ein
bless $newRow auf $newClass
1.102
Frank Seitz, http://fseitz.de/
Copyright (C) 2016 Frank Seitz
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Prty, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Prty
CPAN shell
perl -MCPAN -e shell install Prty
For more information on module installation, please visit the detailed CPAN module installation guide.