Dsao_Db_Table_DataHandler_Row_Abstract Klassenreferenz

Daten-Handler, der Daten genau einer Tabellenzeile verwaltet. Mehr ...

Klassendiagramm für Dsao_Db_Table_DataHandler_Row_Abstract:

Dsao_Db_Table_DataHandler_Abstract Dsao_DataHandler_Abstract

Aufstellung aller Elemente

Öffentliche Methoden

 delete ()
 Löscht Tabellenzeile.
 exists ()
 Prüft, ob Datensatz vorhanden, setzt allerdings nur die ID im Objekt.
 getRow ($throw=true)
 Gibt Tabellenzeile zurück.
 insert ()
 Fügt Daten in die Datenbank ein.
 refresh ($override=false)
 Lädt Tabellenzeile (neu).
 setRow (Zend_Db_Table_Row_Abstract $row)
 Setzt die Tabellenzeile des Objekts.
 update (array $properties=array())
 Tabellenzeile in Datenbank speichern.

Geschützte Methoden

 _fetchMinimal ($primaryKeyColumn= 'id')
 Lädt nur ID der Tabellenspalte aus Datenbank.

Geschützte Attribute

 $_row = null
 Tabellenzeile.


Ausführliche Beschreibung

Daten-Handler, der Daten genau einer Tabellenzeile verwaltet.

Lange Beschreibung.

Autor:
DSAo-Md

http://www.gnu.org/licenses/gpl-3.0.html GNU Public License

Version:
SVN: $Id: Abstract.php 518 2009-09-02 18:34:53Z saviola777 $

Definiert in Zeile 11 der Datei Abstract.php.


Dokumentation der Elementfunktionen

Dsao_Db_Table_DataHandler_Row_Abstract::_fetchMinimal ( primaryKeyColumn = 'id'  )  [protected]

Lädt nur ID der Tabellenspalte aus Datenbank.

Parameter:
$primaryKeyColumn string, Spalte mit Primärschlüssel
Rückgabe:
array, Ergebnisarray

Definiert in Zeile 25 der Datei Abstract.php.

Benutzt Dsao_Db_Table_DataHandler_Abstract::_getValidIdentifiers() und Dsao_Db_Table_DataHandler_Abstract::getTable().

Wird benutzt von exists().

00026   {
00027     $identifiers = $this->_getValidIdentifiers();
00028 
00029     // Select-Statement erstellen und nur primäre Spalte laden
00030     $select = $this->getTable()->select(true)
00031       ->reset(Zend_Db_Select::COLUMNS)->columns($primaryKeyColumn);
00032 
00033     // Where-Klausel aus Identifizierern bauen
00034     foreach ($identifiers as $identifier)
00035     {
00036       // Da die Identifizierer fest im Code verankert sind und keine vom
00037       // Benutzer übergebenene Werte, wird hier nicht gequotet
00038       $select->where($identifier.' = ?', $this->__get($identifier));
00039     }
00040 
00041     $row = $select->fetchRow();
00042 
00043     return ($row ? $row->toArray() : array());
00044   }

Dsao_Db_Table_DataHandler_Row_Abstract::delete (  ) 

Löscht Tabellenzeile.

Rückgabe:
Dsao_Db_Table_DataHandler_Row_Abstract, fließendes Interface

Erneute Implementation von Dsao_Db_Table_DataHandler_Abstract.

Definiert in Zeile 51 der Datei Abstract.php.

Benutzt getRow() und Dsao_Db_Table_DataHandler_Abstract::isSynchronous().

00052   {
00053     parent::delete();
00054 
00055     // Falls Objekt noch nicht aus Datenbank geladen, erst laden und dann
00056     // löschen
00057     if (null === $this->isSynchronous())
00058     {
00059       $this->getSelect()->fetchRow()->delete();
00060     }
00061     // Ansonsten Zeile löschen
00062     else
00063     {
00064       $this->getRow(false)->delete();
00065     }
00066 
00067     return $this;
00068   }

Dsao_Db_Table_DataHandler_Row_Abstract::exists (  ) 

Prüft, ob Datensatz vorhanden, setzt allerdings nur die ID im Objekt.

Rückgabe:
bool, ob Datensatz vorhanden

Erneute Implementation von Dsao_Db_Table_DataHandler_Abstract.

Definiert in Zeile 75 der Datei Abstract.php.

Benutzt Dsao_DataHandler_Abstract::__set(), _fetchMinimal() und Dsao_DataHandler_Abstract::isReadOnly().

00076   {
00077     // Falls schon übergeordnete Funktion Vorhandensein eindeutig klären konnte
00078     if (null !== ($exists = parent::exists()))
00079     {
00080       return $exists;
00081     }
00082 
00083     $rowData = $this->_fetchMinimal();
00084 
00085     // Falls ID vorhanden und Objekt nicht schreib geschützt
00086     if (isset($rowData['id']) && !$this->isReadOnly())
00087     {
00088       $this->__set('id', $rowData['id']);
00089     }
00090 
00091     return (bool) $rowData;
00092   }

Dsao_Db_Table_DataHandler_Row_Abstract::getRow ( throw = true  ) 

Gibt Tabellenzeile zurück.

Parameter:
$throw bool, ob ggf. Exception geworfen werden soll
Rückgabe:
Zend_Db_Table_Row_Abstract, Tabellenzeile

Definiert in Zeile 100 der Datei Abstract.php.

Benutzt Dsao_Db_Table_DataHandler_Abstract::isSynchronous().

Wird benutzt von delete(), refresh() und update().

00101   {
00102     // Falls Objekt nicht snychron oder noch nicht geladen wurde
00103     if ((!$this->isSynchronous() || null === $this->_row) && $throw)
00104     {
00105       throw new Dsao_Exception
00106         ('dsao_db_table_datahandler_row_abstract_row_asynchronous');
00107     }
00108 
00109     return $this->_row;
00110   }

Dsao_Db_Table_DataHandler_Row_Abstract::insert (  ) 

Fügt Daten in die Datenbank ein.

Rückgabe:
Dsao_Db_Table_DataHandler_Row_Abstract, fließendes Interface

Erneute Implementation von Dsao_Db_Table_DataHandler_Abstract.

Definiert in Zeile 117 der Datei Abstract.php.

Benutzt Dsao_Db_Table_DataHandler_Abstract::getTable().

00118   {
00119     parent::insert($properties);
00120 
00121     // In Datenbank einfügen
00122     $this->getTable()->insert($this->_data->getArrayCopy());
00123 
00124     return $this;
00125   }

Dsao_Db_Table_DataHandler_Row_Abstract::refresh ( override = false  ) 

Lädt Tabellenzeile (neu).

Parameter:
$override bool, ob Änderungen ignoriert werden sollen
Rückgabe:
Dsao_Db_Table_DataHandler_Row_Abstract, fließendes Interface

Definiert in Zeile 133 der Datei Abstract.php.

Benutzt getRow(), Dsao_Db_Table_DataHandler_Abstract::isSynchronous(), Dsao_Db_Table_DataHandler_Abstract::refresh() und Dsao_DataHandler_Abstract::setData().

00134   {
00135     parent::refresh();
00136 
00137     // Falls Objekt mit Datenbank synchron oder Änderungen ignoriert werden
00138     // sollen, vorhandene Zeile aktualisieren
00139     if (true === $this->isSynchronous()
00140       || (false === $this->isSynchronous && $override))
00141     {
00142       $this->getRow(false)->refresh();
00143     }
00144     // Ansonsten Zeile laden
00145     else
00146     {
00147       $this->_fetchRow();
00148 
00149       $this->setData($this->_row->toArray());
00150     }
00151 
00152     return $this;
00153   }

Dsao_Db_Table_DataHandler_Row_Abstract::setRow ( Zend_Db_Table_Row_Abstract $  row  ) 

Setzt die Tabellenzeile des Objekts.

Parameter:
$row Zend_Db_Table_Row_Abstract, Tabellenzeile
Rückgabe:
Dsao_Db_Table_DataHandler_Row_Abstract, fließendes Interface

Definiert in Zeile 161 der Datei Abstract.php.

Benutzt Dsao_Db_Table_DataHandler_Abstract::getTable().

00162   {
00163     // Falls Zeile zu einer anderen Tabelle gehört
00164     if ($row->getTable()->info(Zend_Db_Table_Abstract::NAME)
00165       != $this->getTable()->info(Zend_Db_Table_Abstract::NAME))
00166     {
00167       throw new Dsao_Exception
00168         ('dsao_db_table_datahandler_row_abstract_table_invalid');
00169     }
00170 
00171     // Zeile speichern
00172     $this->_row = $row;
00173 
00174     // Daten setzen
00175     $this->_data = $row->toArray();
00176 
00177     // Als synchron und gültig markieren
00178     $this->_synchronous = true;
00179     $this->_valid = true;
00180 
00181     return $this;
00182   }

Dsao_Db_Table_DataHandler_Row_Abstract::update ( array $  properties = array()  ) 

Tabellenzeile in Datenbank speichern.

Parameter:
$properties array, zu ändernde Eigenschaften
Rückgabe:
Dsao_Db_Table_DataHandler_Row_Abstract, fließendes Interface

Erneute Implementation von Dsao_Db_Table_DataHandler_Abstract.

Definiert in Zeile 190 der Datei Abstract.php.

Benutzt Dsao_Db_Table_DataHandler_Abstract::getData() und getRow().

00191   {
00192     $this->getRow(false)->setFromArray($this->getData($properties))->save();
00193   }


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei:

Erzeugt am Fri Sep 18 19:04:12 2009 für DSA online - Morgendaemmerung von  doxygen 1.5.7.1