Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Persistente Objekte und eigene Tabellen

Anwendungsdaten mit eZPersistentObject in eigenen Tabellen speichern - das Array definition(), fetchObject und fetchObjectList, store und remove, Funktionsattribute für Templates und wann Tabellen statt Inhaltsklassen…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/creators/app-creators/persistent-objects-and-custom-tables.md

On this page

This page is a translation. Read the English original

Persistente Objekte und eigene Tabellen

Diese Seite richtet sich an Anwendungsentwickler, die Daten speichern, die keine Inhalte sind: Logs, Einstellungen je Benutzer, importierte Datensätze, Zähler. eZPersistentObject (kernel/classes/ezpersistentobject.php) bildet eine Tabelle auf eine Klasse ab, funktioniert mit jeder Datenbank, die Exponential unterstützt, und macht Zeilen in Templates lesbar.

Inhalt

  1. Inhaltsklasse oder eigene Tabelle?
  2. Die Klasse
  3. Lesen
  4. Schreiben
  5. In Templates
  6. Die Tabelle anlegen

Inhaltsklasse oder eigene Tabelle?

Wählen Sie eine Inhaltsklasse, wennWählen Sie eine Tabelle, wenn
die Redaktion die Daten in der Administration anlegt und bearbeitetnur Code sie schreibt
sie Versionen, Übersetzungen und Rechte je Element brauchtnichts davon nötig ist
sie als Seiten erscheinenes sich um interne Daten handelt
die Mengen moderat sindes Millionen Zeilen oder viele Schreibvorgänge pro Sekunde gibt

Die Klasse

<?php
class expDemoItem extends eZPersistentObject
{
    public static function definition()
    {
        return array(
            'fields' => array(
                'id'         => array( 'name' => 'ID', 'datatype' => 'integer', 'default' => 0, 'required' => true ),
                'user_id'    => array( 'name' => 'UserID', 'datatype' => 'integer', 'default' => 0, 'required' => true ),
                'title'      => array( 'name' => 'Title', 'datatype' => 'string', 'default' => '', 'required' => true ),
                'created'    => array( 'name' => 'Created', 'datatype' => 'integer', 'default' => 0, 'required' => true ) ),
            'keys' => array( 'id' ),
            'increment_key' => 'id',
            'function_attributes' => array( 'user' => 'user' ),
            'class_name' => 'expDemoItem',
            'sort' => array( 'created' => 'desc' ),
            'name' => 'expdemo_item' );
    }

    public function user()
    {
        return eZUser::fetch( $this->attribute( 'user_id' ) );
    }
}

Die Klassen des Kernels sehen genauso aus (eZSection::definition() in kernel/classes/ezsection.php).

Lesen

$item  = eZPersistentObject::fetchObject( expDemoItem::definition(), null, array( 'id' => (int)$id ) );
$items = eZPersistentObject::fetchObjectList( expDemoItem::definition(), null,
                                              array( 'user_id' => (int)$userID ),
                                              array( 'created' => 'desc' ),
                                              array( 'offset' => 0, 'length' => 20 ) );
$count = eZPersistentObject::count( expDemoItem::definition(), array( 'user_id' => (int)$userID ) );

Bedingungen sind Arrays, niemals SQL-Zeichenketten: Die Werte werden für Sie maskiert.

Schreiben

$item = new expDemoItem( array( 'user_id' => $userID, 'title' => $title, 'created' => time() ) );
$item->store();                     // insert; the id is set from increment_key
$item->setAttribute( 'title', $newTitle );
$item->store();                     // update
$item->remove();                    // delete
eZPersistentObject::removeObject( expDemoItem::definition(), array( 'user_id' => (int)$userID ) );

Fassen Sie zusammengehörige Schreibvorgänge in eine Transaktion ($db = eZDB::instance(); $db->begin(); ... $db->commit();) (Datenbankzugriff).

In Templates

Felder und function_attributes sind als $item.title und $item.user.login lesbar. Geben Sie persistente Objekte aus Fetch-Funktionen zurück, um Templates Ihre Daten bereitzustellen (Eine eigene Fetch-Funktion schreiben).

Die Tabelle anlegen

Liefern Sie die Tabelle als Schemadatei der Erweiterung und einen Installationsbefehl aus; halten Sie eine einzige Definition für jede Datenbank vor (Schema und .dba-Dateien).

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x