|
|
@@ -1,12 +1,10 @@
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
-<!-- EN-Revision: 18151 -->
|
|
|
+<!-- EN-Revision: 19484 -->
|
|
|
<!-- Reviewed: no -->
|
|
|
<sect1 id="zend.db.table.row">
|
|
|
-
|
|
|
<title>Zend_Db_Table_Row</title>
|
|
|
|
|
|
<sect2 id="zend.db.table.row.introduction">
|
|
|
-
|
|
|
<title>Einführung</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -22,11 +20,9 @@
|
|
|
<ulink url="http://www.martinfowler.com/eaaCatalog/rowDataGateway.html">Row Data
|
|
|
Gateway</ulink>-Entwurfsmusters.
|
|
|
</para>
|
|
|
-
|
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="zend.db.table.row.read">
|
|
|
-
|
|
|
<title>Eine Zeile lesen</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -38,24 +34,21 @@
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.db.table.row.read.example">
|
|
|
-
|
|
|
<title>Beispiel des Lesen einer Zeile</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$bugs = new Bugs();
|
|
|
$row = $bugs->fetchRow($bugs->select()->where('bug_id = ?', 1));
|
|
|
]]></programlisting>
|
|
|
-
|
|
|
</example>
|
|
|
|
|
|
<para>
|
|
|
Ein <classname>Zend_Db_Table_Rowset</classname> Objekt enthält einen Satz von
|
|
|
- <classname>Zend_Db_Table_Row</classname> Objekten. Siehe
|
|
|
- <xref linkend="zend.db.table.rowset" />.
|
|
|
+ <classname>Zend_Db_Table_Row</classname> Objekten. Siehe das Kapitel über
|
|
|
+ <link linkend="zend.db.table.rowset">Tabellen Zeilensets</link> für Details.
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.db.table.row.read.example-rowset">
|
|
|
-
|
|
|
<title>Beispiel des Lesens einer Zeile aus einem Rowset</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -63,11 +56,9 @@ $bugs = new Bugs();
|
|
|
$rowset = $bugs->fetchAll($bugs->select()->where('bug_status = ?', 1));
|
|
|
$row = $rowset->current();
|
|
|
]]></programlisting>
|
|
|
-
|
|
|
</example>
|
|
|
|
|
|
<sect3 id="zend.db.table.row.read.get">
|
|
|
-
|
|
|
<title>Spaltenwerte aus einer Zeile lesen</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -76,7 +67,6 @@ $row = $rowset->current();
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.db.table.row.read.get.example">
|
|
|
-
|
|
|
<title>Beispiel für das Lesens einer Spalte aus einer Zeile</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -86,11 +76,9 @@ $row = $bugs->fetchRow($bugs->select()->where('bug_id = ?', 1));
|
|
|
// Wert der Spalte bug_description ausgeben
|
|
|
echo $row->bug_description;
|
|
|
]]></programlisting>
|
|
|
-
|
|
|
</example>
|
|
|
|
|
|
<note>
|
|
|
-
|
|
|
<para>
|
|
|
Frühere Versionen von <classname>Zend_Db_Table_Row</classname> haben diese
|
|
|
Spalten-Zugriffsnamen mithilfe einer Zeichenketten-Transformation namens
|
|
|
@@ -102,13 +90,10 @@ echo $row->bug_description;
|
|
|
diese Funktion jedoch nicht mehr. Der Spalten-Zugriffsname muss genau so
|
|
|
geschrieben sein, wie die Spalte in der Datenbank heißt.
|
|
|
</para>
|
|
|
-
|
|
|
</note>
|
|
|
-
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="zend.db.table.row.read.to-array">
|
|
|
-
|
|
|
<title>Zeilendaten als ein Array lesen</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -118,7 +103,6 @@ echo $row->bug_description;
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.db.table.row.read.to-array.example">
|
|
|
-
|
|
|
<title>Beispiel der Benutzung der toArray()-Methode</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -134,7 +118,6 @@ foreach ($rowArray as $column => $value) {
|
|
|
echo "Wert: $value\n";
|
|
|
}
|
|
|
]]></programlisting>
|
|
|
-
|
|
|
</example>
|
|
|
|
|
|
<para>
|
|
|
@@ -142,30 +125,24 @@ foreach ($rowArray as $column => $value) {
|
|
|
updatefähig. Die Werte des Arrays können wie in jedem Array modifiziert werden,
|
|
|
aber Änderungen an diesem Array werden nicht direkt in der Datenbank gespeichert.
|
|
|
</para>
|
|
|
-
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="zend.db.table.row.read.relationships">
|
|
|
-
|
|
|
<title>Daten aus verwandten Tabellen lesen</title>
|
|
|
|
|
|
<para>
|
|
|
Die Klasse <classname>Zend_Db_Table_Row_Abstract</classname> bietet Methoden, um
|
|
|
- Zeilen und Zeilensätze aus verwandten Tabellen auszulesen. Siehe
|
|
|
- <xref linkend="zend.db.table.relationships" /> für weitere Informationen über
|
|
|
- Tabellenbeziehungen.
|
|
|
+ Zeilen und Zeilensätze aus verwandten Tabellen auszulesen. Siehe das
|
|
|
+ <link linkend="zend.db.table.relationships">Kapitel über Beziehungen</link> für
|
|
|
+ weitere Informationen über Tabellenbeziehungen.
|
|
|
</para>
|
|
|
-
|
|
|
</sect3>
|
|
|
-
|
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="zend.db.table.row.write">
|
|
|
-
|
|
|
<title>Zeilen in die Datenbank schreiben</title>
|
|
|
|
|
|
<sect3 id="zend.db.table.row.write.set">
|
|
|
-
|
|
|
<title>Spaltenwerte einer Zeile verändern</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -181,7 +158,6 @@ foreach ($rowArray as $column => $value) {
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.db.table.row.write.set.example">
|
|
|
-
|
|
|
<title>Beispiel der Änderung eines Spaltenwertes einer Zeile</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -194,13 +170,10 @@ $row->bug_status = 'FIXED';
|
|
|
// Die Datenbankzeile mit den neuen Werten aktualisieren
|
|
|
$row->save();
|
|
|
]]></programlisting>
|
|
|
-
|
|
|
</example>
|
|
|
-
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="zend.db.table.row.write.insert">
|
|
|
-
|
|
|
<title>Eine neue Zeile einfügen</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -212,7 +185,6 @@ $row->save();
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.db.table.row.write.insert.example">
|
|
|
-
|
|
|
<title>Beispiel der Erstellung einer neuen Zeile für eine Tabelle</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -226,7 +198,6 @@ $newRow->bug_status = 'NEW';
|
|
|
// Neue Zeile in die Datenbank einfügen
|
|
|
$newRow->save();
|
|
|
]]></programlisting>
|
|
|
-
|
|
|
</example>
|
|
|
|
|
|
<para>
|
|
|
@@ -235,7 +206,6 @@ $newRow->save();
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.db.table.row.write.insert.example2">
|
|
|
-
|
|
|
<title>Beispiel der Bekanntgabe einer neuen Zeile für eine Tabelle</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -250,24 +220,19 @@ $newRow = $bugs->createRow($data);
|
|
|
// Neue Zeile in die Datenbank einfugen
|
|
|
$newRow->save();
|
|
|
]]></programlisting>
|
|
|
-
|
|
|
</example>
|
|
|
|
|
|
<note>
|
|
|
-
|
|
|
<para>
|
|
|
Die Methode <methodname>createRow()</methodname> wurde in früheren Versionen
|
|
|
von <classname>Zend_Db_Table</classname> <methodname>fetchNew()</methodname>
|
|
|
genannt. Es wird empfohlen, den neuen Methodennamen zu benutzen, obwohl der
|
|
|
alte Name weiterhin funktioniert, um Abwärtskompatibilität zu gewährleisten.
|
|
|
</para>
|
|
|
-
|
|
|
</note>
|
|
|
-
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="zend.db.table.row.write.set-from-array">
|
|
|
-
|
|
|
<title>Werte mehrerer Spalten ändern</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -279,7 +244,6 @@ $newRow->save();
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.db.table.row.write.set-from-array.example">
|
|
|
-
|
|
|
<title>
|
|
|
Beispiel der Verwendung von setFromArray() um neue Werte in einer Tabelle zu
|
|
|
setzen
|
|
|
@@ -301,13 +265,10 @@ $newRow->setFromArray($data);
|
|
|
// Neue Zeile in die Datenbank schreiben
|
|
|
$newRow->save();
|
|
|
]]></programlisting>
|
|
|
-
|
|
|
</example>
|
|
|
-
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="zend.db.table.row.write.delete">
|
|
|
-
|
|
|
<title>Eine Zeile löschen</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -317,7 +278,6 @@ $newRow->save();
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.db.table.row.write.delete.example">
|
|
|
-
|
|
|
<title>Beispiel für das Löschen einer Zeile</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -327,20 +287,16 @@ $row = $bugs->fetchRow('bug_id = 1');
|
|
|
// Zeile löschen
|
|
|
$row->delete();
|
|
|
]]></programlisting>
|
|
|
-
|
|
|
</example>
|
|
|
|
|
|
<para>
|
|
|
<methodname>save()</methodname> muss nicht aufgerufen werden, um den Löschvorgang
|
|
|
abzuschließen; er wird sofort auf der Datenbank ausgeführt.
|
|
|
</para>
|
|
|
-
|
|
|
</sect3>
|
|
|
-
|
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="zend.db.table.row.serialize">
|
|
|
-
|
|
|
<title>Serialisieren und Deserialisieren von Zeilen</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -352,7 +308,6 @@ $row->delete();
|
|
|
</para>
|
|
|
|
|
|
<sect3 id="zend.db.table.row.serialize.serializing">
|
|
|
-
|
|
|
<title>Eine Zeile Serialisieren</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -362,7 +317,6 @@ $row->delete();
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.db.table.row.serialize.serializing.example">
|
|
|
-
|
|
|
<title>Beispiel: Eine Zeile serialisieren</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -374,13 +328,10 @@ $serializedRow = serialize($row);
|
|
|
|
|
|
// Jetzt kann $serializedRow z.B. in einer Datei gespeichert werden
|
|
|
]]></programlisting>
|
|
|
-
|
|
|
</example>
|
|
|
-
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="zend.db.table.row.serialize.unserializing">
|
|
|
-
|
|
|
<title>Zeilen deserialisieren</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -398,7 +349,6 @@ $serializedRow = serialize($row);
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.db.table.row.serialize.unserializing.example">
|
|
|
-
|
|
|
<title>Beispiel für das deserialisieren eines serialisiertes Zeilenobjektes</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -408,11 +358,9 @@ $rowClone = unserialize($serializedRow);
|
|
|
// allerdings nur lesend.
|
|
|
echo $rowClone->bug_description;
|
|
|
]]></programlisting>
|
|
|
-
|
|
|
</example>
|
|
|
|
|
|
<note>
|
|
|
-
|
|
|
<title>Warum werden Zeilenobjekte unverbunden deserialisiert?</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -425,13 +373,10 @@ echo $rowClone->bug_description;
|
|
|
Der Leser des serialisierten Objekts sollte es nicht benutzen können, um
|
|
|
Zugriff zur Datenbank zu erhalten, ohne richtige Logindaten zu kennen.
|
|
|
</para>
|
|
|
-
|
|
|
</note>
|
|
|
-
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="zend.db.table.row.serialize.set-table">
|
|
|
-
|
|
|
<title>Ein Zeilenobjekt als Live-Daten reaktivieren</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -446,7 +391,6 @@ echo $rowClone->bug_description;
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.db.table.row.serialize.set-table.example">
|
|
|
-
|
|
|
<title>Ein Zeilenobjekt reaktivieren</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -462,15 +406,11 @@ $rowClone->setTable($bugs);
|
|
|
$rowClone->bug_status = 'FIXED';
|
|
|
$rowClone->save();
|
|
|
]]></programlisting>
|
|
|
-
|
|
|
</example>
|
|
|
-
|
|
|
</sect3>
|
|
|
-
|
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="zend.db.table.row.extending">
|
|
|
-
|
|
|
<title>Die Zeilenklasse erweitern</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -485,7 +425,6 @@ $rowClone->save();
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.db.table.row.extending.example">
|
|
|
-
|
|
|
<title>Eine eigene Zeilenklasse angeben</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -506,7 +445,6 @@ class Products extends Zend_Db_Table_Abstract
|
|
|
// Instanz der Tabellenklasse angeben.
|
|
|
$bugs = new Bugs(array('rowClass' => 'MyRow'));
|
|
|
]]></programlisting>
|
|
|
-
|
|
|
</example>
|
|
|
|
|
|
<sect3 id="zend.db.table.row.extending.overriding">
|
|
|
@@ -539,7 +477,6 @@ class MyApplicationRow extends Zend_Db_Table_Row_Abstract
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="zend.db.table.row.extending.insert-update">
|
|
|
-
|
|
|
<title>
|
|
|
Eigene Logik für Einfügen, Aktualisieren und Löschen in Zend_Db_Table_Row definieren
|
|
|
</title>
|
|
|
@@ -569,7 +506,6 @@ class MyApplicationRow extends Zend_Db_Table_Row_Abstract
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.db.table.row.extending.overriding-example1">
|
|
|
-
|
|
|
<title>Beispiel einer eigenen Logik in einer Zeilenklasse</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -607,11 +543,9 @@ if ($loggingEnabled) {
|
|
|
$bugs = new Bugs();
|
|
|
}
|
|
|
]]></programlisting>
|
|
|
-
|
|
|
</example>
|
|
|
|
|
|
<example id="zend.db.table.row.extending.overriding-example2">
|
|
|
-
|
|
|
<title>Zeilenklasse, die Insert Daten für verschiedene Tabellen loggt</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -651,13 +585,10 @@ class Products extends Zend_Db_Table_Abstract
|
|
|
protected $_rowClass = 'MyLoggingRow';
|
|
|
}
|
|
|
]]></programlisting>
|
|
|
-
|
|
|
</example>
|
|
|
-
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="zend.db.table.row.extending.inflection">
|
|
|
-
|
|
|
<title>Inflection in Zend_Db_Table_Row einbauen</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -668,8 +599,9 @@ class Products extends Zend_Db_Table_Abstract
|
|
|
|
|
|
<para>
|
|
|
<classname>Zend_Db</classname> Klassen implementieren Inflection standardmäßig
|
|
|
- nicht. <xref linkend="zend.db.table.extending.inflection" /> gibt eine Erklärung für
|
|
|
- diese Richtlinie.
|
|
|
+ nicht. Siehe das Kapitel über die <link
|
|
|
+ linkend="zend.db.table.extending.inflection">Erweiterung der Inflection</link>
|
|
|
+ für eine Erklärung diesr Richtlinie.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
@@ -680,7 +612,6 @@ class Products extends Zend_Db_Table_Abstract
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.db.table.row.extending.inflection.example">
|
|
|
-
|
|
|
<title>Inflection-Methode definieren</title>
|
|
|
|
|
|
<para>
|
|
|
@@ -715,7 +646,6 @@ $row = $bugs->fetchNew();
|
|
|
// _transformColumn() wandelt den Spaltennamen wieder um.
|
|
|
$row->bugDescription = 'New description';
|
|
|
]]></programlisting>
|
|
|
-
|
|
|
</example>
|
|
|
|
|
|
<para>
|
|
|
@@ -723,11 +653,8 @@ $row->bugDescription = 'New description';
|
|
|
schreiben. Zend Framework bietet solche Funktionen wie bereits erwähnt von Haus aus
|
|
|
nicht an.
|
|
|
</para>
|
|
|
-
|
|
|
</sect3>
|
|
|
-
|
|
|
</sect2>
|
|
|
-
|
|
|
</sect1>
|
|
|
<!--
|
|
|
vim:se ts=4 sw=4 et:
|