Zend: TableGateway und das RowGatewayFeature

Veröffentlicht von Sascha am

Basierend auf dem vorherigen Beitrag Zend: Datenbank Connection bereitstellen wollen wir hier die Arbeitsweise mit dem TableGateway und dem RowGatewayFeature erklären:

Die Verwendung des TableGateways ist sehr einfach wie der Code Ausschnitt aus einem Customer Controller bzw. dessen editAction zeigt:

$output = array();
$adapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');
$customerTable = new TableGateway("customer", $adapter);

$rows = $customerTable->select();
foreach($rows as $row) {
    print_r($row);
}

Das TableGateway liefert uns als Result lediglich „repräsentative Objekte“ zurück, welche zwar gelesen werden können aber sonst keine weitere Funktionalitäten besitzen.
Wer Daten lediglich anzeigen möchte, für den ist das TableGateway vollkommen ausreichen.

Möchte man mit den Daten weiter arbeiten, beispielsweise Save oder Delete Operationen darauf anwenden, dem sei das RowGateway ans Herz gelegt.
Im folgenden Zeigen wir das RowGatewayFeature:

$customerTable = new TableGateway("customer", $adapter, new RowGatewayFeature('id'));

Die Initialisierung des TableGateways haben wir nun geändert, in dem wir eine RowGatewayFeature Instanz übergeben. Der ‚id‘ Parameter kennzeichnet den Primary Key in der entsprechenden Datenbank Tabelle. Durch diese Änderung liefert uns das TableGateway nun keine Arrays oder ArrayObjects mehr zurück, sondern wir erhalten eine Collection von RowGateways. Diese RowGateway Objekte besitzen von Hause aus eine Save() und Delete() Methode, die uns die Arbeit abnehmen. RowGateway Objekte können sich also um ihre eigene „Persitenz“ kümmern.

$customerTable = new TableGateway("customer", $adapter, new RowGatewayFeature('id'));

$rows = $customerTable->select();

$customer = $rows->current();
$customer->city = "Berlin";
$customer->save(); // ->delete();
Kategorien: Zend Framework 2

%d Bloggern gefällt das:

Durch das Fortsetzen der Benutzung dieser Seite, stimmst du der Benutzung von Cookies zu. Weitere Informationen

Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Außerdem geben wir Informationen zu Ihrer Nutzung unserer Website an unsere Partner für soziale Medien, Werbung und Analysen weiter.

Schließen