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

eZPersistentObject

Die Referenz von eZPersistentObject - die Schlüssel von definition(), fetchObject(), fetchObjectList() und seine Parameter, count(), store(), remove(), removeObject(), Attributzugriff - mit den Signaturen des Kernels.

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/extension-development/part-8-reference/ezpersistentobject.md

On this page

This page is a translation. Read the English original

eZPersistentObject

Teil 8, Referenz 5. eZPersistentObject (kernel/classes/ezpersistentobject.php) bildet eine Tabellenzeile auf ein Objekt ab. Die eigenen Klassen des Kernels (Inhaltsobjekte, Knoten, Benutzer, Rollen) bauen darauf auf, und es ist der empfohlene Weg, eigene Tabellen zu führen. Das Tutorial ist Persistente Objekte und Ihre eigenen Tabellen und Ihre eigene Tabelle mit einem persistenten Objekt, von Hand. Diese Seite ist die Referenz.

definition()

Eine public static function definition() gibt ein Array zurück:

SchlüsselBedeutung
fieldsSpaltenname => array( 'name' => attribute name, 'datatype' => 'integer'|'string'|'float'|'text', 'default' => ..., 'required' => bool )
keysdie Spalten des Primärschlüssels
increment_keydie Spalte mit automatischer Hochzählung, falls vorhanden
class_namedie Klasse, zu der Zeilen werden
nameder Tabellenname
sortStandardsortierung, array( column => 'asc'|'desc' )
function_attributesAttributname => Methodenname, für berechnete Attribute, die über attribute() (und in Templates) lesbar sind
set_functionsAttributname => Methodenname, aufgerufen von setAttribute()

Abrufen

public static function fetchObject( $def, $field_filters, $conds, $asObject = true, $grouping = null, $custom_fields = null )

public static function fetchObjectList( $def, $field_filters = null, $conds = [], $sorts = null, $limit = null,
                                        $asObject = true, $grouping = false, $custom_fields = null,
                                        $custom_tables = null, $custom_conds = null )

public static function count( $def, $conds = null, $field = null )
ParameterBedeutung
$defIhr definition()
$field_filtersdie abzurufenden Spalten; null für alle
$condsarray( column => value ); ein Wert kann array( '<', 10 ) sein (auch >, <=, >=, <>, like), array( array( 1, 2, 3 ) ) für IN oder array( false, array( 200, 500 ) ) für BETWEEN
$sortsarray( column => 'asc' ); null verwendet die Sortierung der Definition
$limitarray( 'offset' => 0, 'limit' => 20 )
$asObjectfalse gibt einfache Arrays zurück
<?php
class myExtItem extends eZPersistentObject
{
    public static function definition()
    {
        return array(
            'fields' => array(
                'id' => array( 'name' => 'ID', 'datatype' => 'integer', 'default' => 0, 'required' => true ),
                'parent_id' => array( 'name' => 'ParentID', 'datatype' => 'integer', 'default' => 0, 'required' => true ),
                'name' => array( 'name' => 'Name', 'datatype' => 'string', 'default' => '', 'required' => true ),
            ),
            'keys' => array( 'id' ),
            'increment_key' => 'id',
            'class_name' => 'myExtItem',
            'sort' => array( 'name' => 'asc' ),
            'name' => 'myext_item',
        );
    }

    public static function fetch( $id )
    {
        return eZPersistentObject::fetchObject( self::definition(), null, array( 'id' => (int)$id ) );
    }

    public static function fetchByParent( $parentID, $offset = 0, $limit = 20 )
    {
        return eZPersistentObject::fetchObjectList( self::definition(), null, array( 'parent_id' => (int)$parentID ),
                                                    null, array( 'offset' => $offset, 'limit' => $limit ) );
    }

    public static function countByParent( $parentID )
    {
        return eZPersistentObject::count( self::definition(), array( 'parent_id' => (int)$parentID ) );
    }
}

fetchObject() gibt null zurück, wenn nichts passt. Bedingungswerte maskiert und quotiert die Klasse (als Zeichenketten); wandeln Sie Werte aus dem Request trotzdem in den erwarteten Typ um.

Schreiben

MethodeVerwendung
new myExtItem( $row ), dann store( $fieldFilters = null )einfügen oder, wenn der Schlüssel existiert, aktualisieren; setzt nach einem Einfügen den Hochzählschlüssel
setAttribute( $attr, $val )einen Wert ändern (ruft eine set_functions-Methode auf, falls definiert)
remove( $conditions = null, $extraConditions = null )diese Zeile löschen
removeObject( $def, $conditions = null, $extraConditions = null ) (statisch)passende Zeilen löschen
updateObjectList( $parameters ) (statisch)passende Zeilen aktualisieren, ohne sie abzurufen
sync( $fieldFilters = null )nur speichern, wenn es Änderungen gibt
<?php
$item = new myExtItem( array( 'parent_id' => 2, 'name' => 'First' ) );
$item->store();
$id = $item->attribute( 'id' );

Attribute lesen

MethodeGibt zurück
attribute( $attr, $noFunction = false )den Wert eines Felds oder das Ergebnis einer function_attributes-Methode
hasAttribute( $attr )ob das Attribut existiert
attributes()alle Attributnamen, einschließlich der Funktionsattribute

Diese drei Methoden machen Objekte in Templates lesbar: {$item.name}.

Auf jeder Engine

eZPersistentObject erzeugt das SQL für die konfigurierte Engine, und auf MongoDB-Installationen setzt der Adapter seine Aufrufe in MongoDB-Abfragen um (MongoDB-Unterstützung im Kernel). Außerdem hält es Felder, die die Klasse nicht deklariert, in einem internen Array, sodass die Abkündigung dynamischer Eigenschaften in PHP 8.2 Unterklassen nicht betrifft (Dynamische Eigenschaften).

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