Start · Sprachen · PHP · Referenz · mysql_xdevapi\CrudOperationSkippable

mysql_xdevapi\CrudOperationSkippable

Interface

Interface für CRUD-Operationen, die das Überspringen von Ergebnissen oder Datensätzen unterstützen.

seit PHP 8.0.20 Kategorie: db

Signatur

interface mysql_xdevapi\CrudOperationSkippable

Beschreibung

Das Interface mysql_xdevapi\CrudOperationSkippable gehört zur MySQL X DevAPI-Erweiterung (mysql_xdevapi) und wird von CRUD-Operationsklassen implementiert, die einen Mechanismus zum Überspringen von Ergebnissen oder Datensätzen bereitstellen. Es ermöglicht das Definieren eines Offsets, ab dem Ergebnisse zurückgegeben werden sollen – vergleichbar mit dem SQL-Schlüsselwort OFFSET in SELECT ... LIMIT x OFFSET y-Abfragen.

Typischerweise wird dieses Interface in Verbindung mit Pagination-Szenarien eingesetzt: Mit limit() wird die maximale Anzahl zurückgegebener Datensätze festgelegt und mit dem durch dieses Interface bereitgestellten skip()-Mechanismus wird der Startpunkt innerhalb der Ergebnismenge verschoben. So können seitenweise Datenabfragen effizient umgesetzt werden.

Klassen wie mysql_xdevapi\CollectionFind oder mysql_xdevapi\TableSelect implementieren dieses Interface. Es ist also kein direktes Instanziieren des Interfaces möglich; es dient als vertragliche Grundlage (Contract) für alle CRUD-Klassen, die eine Skip-Funktionalität anbieten.

Die X DevAPI ist Bestandteil des MySQL Document Store und bietet eine dokumentenorientierte NoSQL-Schnittstelle zu MySQL 8.0 und neuer. Das Interface ergänzt die fluent API (Method Chaining), die für X DevAPI-Abfragen charakteristisch ist.

Beispiele

Pagination mit skip() und limit() auf einer Collection

<?php
// Verbindung zur MySQL X DevAPI herstellen
$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');
$schema = $session->getSchema('meine_datenbank');
$collection = $schema->getCollection('produkte');

// Seite 2 abrufen: Datensätze 11–20 (10 Einträge überspringen, 10 laden)
$ergebnis = $collection
    ->find()
    ->limit(10)
    ->skip(10)  // CrudOperationSkippable-Methode
    ->execute();

foreach ($ergebnis->fetchAll() as $dokument) {
    echo $dokument['name'] . PHP_EOL;
}

$session->close();
?>

Typprüfung auf CrudOperationSkippable per instanceof

<?php
$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');
$schema = $session->getSchema('meine_datenbank');
$collection = $schema->getCollection('artikel');

// Find-Objekt erzeugen
$findOp = $collection->find();

// Prüfen, ob die Operation Skip unterstützt
if ($findOp instanceof mysql_xdevapi\CrudOperationSkippable) {
    $findOp->limit(5)->skip(20);
    $result = $findOp->execute();
    var_dump($result->count());
} else {
    echo 'Diese Operation unterstützt kein Überspringen von Datensätzen.';
}

$session->close();
?>

// Wichtig · Fallstricke

Voraussetzungen: Die Erweiterung mysql_xdevapi muss in PHP installiert und aktiviert sein (pecl install mysql_xdevapi). Sie erfordert außerdem einen MySQL-Server ab Version 8.0 mit aktiviertem X-Plugin.

Unterschied zu offset(): In der X DevAPI wird anstelle des aus SQL bekannten OFFSET-Begriffs die Methode skip() verwendet. Das Verhalten ist identisch – der angegebene Wert verschiebt den Startpunkt der Ergebnismenge.

Kompatibilität: Das Interface ist Teil der experimentellen PECL-Erweiterung mysql_xdevapi; API-Änderungen zwischen Versionen sind möglich. Vor dem produktiven Einsatz sollte die jeweilige Versionsdokumentation konsultiert werden.