Montag, 6. Januar 2014

ZF2 zweite Datebanktabelle Ansprechen, Tablegateway Tabelle wechseln

Im Zendframework 2 kann man pro Tabellenobjekt nur eine Tabelle ansprechen.

Daher muss man entweder ein neues Gatewayobjekt oder ein SQLobjekt erzeugen. Im folgenden Beispiel habe ich ein SQL -Objekt verwendet:

Zuerst lädt man die entsprechenden Klassen:
use Zend\Db\TableGateway\TableGateway;
use Zend\Db\Sql\Sql;
use Zend\Db\Sql\Where;


In der Methode geht man dann wie folgt vor:           
 // Adapter Einstellungen holen -> die sind in der Sekelleton Application unter: Config / Autoload / local.php bzw. global.php zu finden:
$mysql_adapter=$this->tableGateway->getAdapter();
// Falls man die Einstellungen sehen möchte:
//echo var_dump ($mysql_adapter);
// Erzeugen eines neuen SQL Objektes, falls man möchte kann man hier schon die Tabelle übergeben  (Achtung: Join abfragen funktionieren dann nicht):
       $sql = new Sql($mysql_adapter);
// Dann die Select Anweisung erstellen:
        $select = $sql->select();
// Auswählen der Tabelle 
        $select->from('tabelle');
// Auswählern der WHERE Anweisung
        $select->where('spalte='.$wert);
// SQL-Anweisung anzeigen lassen:
        echo $select->getSqlString();
// SQL Anweisung ausführbar machen:
        $selectString = $sql->getSqlStringForSqlObject($select);
// Und ausführen:
        $result = $mysql_adapter->query($selectString, $mysql_adapter::QUERY_MODE_EXECUTE);
// Falls man das Ergebnis direkt auswerten möchte, kann man das mit use Zend\Db\Adapter\Driver\ResultInterface; und
use Zend\Db\ResultSet\ResultSet; tun:

//Neues result-Objekt erzeugen und initialisieren
$resultSet = new ResultSet;
$resultSet->initialize($result);
//Jede Zeile auswerten:
            foreach ($resultSet as $row) {
                echo $row->spalte . PHP_EOL
            }

Keine Kommentare:

Kommentar veröffentlichen