Signatur
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.