Start · Sprachen · PHP · Referenz · mysql_xdevapi\CrudOperationSortable

mysql_xdevapi\CrudOperationSortable

Interface

Interface für CRUD-Operationen in der MySQL X DevAPI, deren Ergebnisse über eine Sortierbedingung geordnet werden können.

seit PHP 8.0.11 Kategorie: db

Signatur

interface CrudOperationSortable

Beschreibung

Das Interface mysql_xdevapi\CrudOperationSortable gehört zur MySQL X DevAPI-Erweiterung (mysql_xdevapi) und definiert das Verhalten von CRUD-Operationen, deren Ergebnismenge sortiert werden kann. Es wird von konkreten Operationsklassen implementiert, die Daten aus MySQL-Dokument-Stores oder relationalen Tabellen abrufen, z. B. CollectionFind oder TableSelect.

Durch die Implementierung dieses Interface stellen Klassen sicher, dass sie eine sort()-Methode bereitstellen, mit der eine oder mehrere Sortierregeln (z. B. Feldname und Richtung ASC/DESC) angegeben werden können, bevor die Abfrage ausgeführt wird. Die Sortierung wird serverseitig in MySQL ausgeführt und ist damit effizient auch bei großen Datenmengen.

Das Interface ermöglicht eine einheitliche API über verschiedene CRUD-Operationstypen hinweg: Entwickler können unabhängig vom konkreten Typ (Collection- oder Table-Operation) dieselbe Methode nutzen, um Sortierbedingungen zu definieren. Die Methode gibt typischerweise das Operationsobjekt selbst zurück, sodass ein fluentes Chaining von Methodenaufrufen möglich ist.

Dieses Interface sollte direkt in eigenem Code nur implementiert werden, wenn eine vollständig eigene CRUD-Abstraktion auf Basis der X DevAPI gebaut wird. Im normalen Anwendungsfall interagiert man mit den konkreten Implementierungen dieser Klassen.

Beispiele

Dokumente einer Collection sortiert abrufen (CollectionFind implementiert CrudOperationSortable)

<?php
// Verbindung zur MySQL-Datenbank über X DevAPI herstellen
$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');

$schema = $session->getSchema('meine_datenbank');
$collection = $schema->getCollection('produkte');

// CollectionFind implementiert CrudOperationSortable
// Die sort()-Methode wird durch das Interface bereitgestellt
$ergebnis = $collection
    ->find('preis > 10')
    ->sort('preis ASC', 'name DESC')
    ->execute();

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

$session->close();

Tabellenzeilen sortiert und limitiert lesen (TableSelect implementiert CrudOperationSortable)

<?php
$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');

$schema = $session->getSchema('shop');
$tabelle = $schema->getTable('bestellungen');

// TableSelect implementiert ebenfalls CrudOperationSortable
$ergebnis = $tabelle
    ->select(['id', 'kunde', 'betrag'])
    ->orderBy('betrag DESC') // alternativ via orderBy()
    ->limit(5)
    ->execute();

while ($zeile = $ergebnis->fetchOne()) {
    echo $zeile['kunde'] . ' – ' . $zeile['betrag'] . ' EUR' . PHP_EOL;
}

$session->close();

// Wichtig · Fallstricke

Erweiterung erforderlich: Die mysql_xdevapi-Erweiterung muss installiert und aktiviert sein (pecl install mysql_xdevapi). Sie ist nicht im Standard-PHP-Paket enthalten und setzt MySQL 8.0+ mit aktiviertem X Plugin voraus.

Nicht zu verwechseln mit der veralteten mysql_- oder mysqli_-API – mysql_xdevapi ist eine vollständig separate, moderne Erweiterung für den MySQL X Protocol-Stack.

Die Sortierbedingungen werden als Ausdrucks-Strings übergeben, die MySQL-Feldnamen und Richtungsangaben (ASC/DESC) enthalten. Ungültige Feldnamen oder Syntaxfehler führen zu einer Laufzeitausnahme (Exception vom Typ mysql_xdevapi\Exception).