zf2 wählen Sie Spalten aus verknüpften Tabellen - wie?

Ich das Gefühl, ich muss mich fehlt etwas sehr einfach. Es ist eine sehr einfache Aufgabe, alles was ich tun möchte ist etwas wie:

SELECT * FROM lookup_items
JOIN lookup ON lookup_items.lookup_id = lookup.id

Dieser gibt alle Spalten für alle verknüpften Tabellen im normalen SQL. Hier ist mein Versuch zf2:

$select = new Select();

$select->from('lookup_items');
$select->join('lookup', 'lookup_items.lookup_id = lookup.id');

Die Ergebnismenge enthält nur die Spalten in 'lookup_items'. Ich habe versucht, verschiedene Möglichkeiten, um die 'Auswahl' - Spalten, einschließlich:

$select->columns(array('lookup_items.*', 'lookup.*'));

Aber Sie alle nur die Luft zu sprengen. Sicherlich gibt es eine Möglichkeit, dies zu tun, und es ist nur so einfach, mir fehlt es komplett.

Dachte ich, ein einfaches Beispiel wäre die Verwirrung zu vermeiden, aber hier ist mehr code:

class LookupItemsTable extends AbstractTableGateway
{
public function getList($resource)
{
    $system_name = str_replace('*', '%', strtoupper($resource));

    $joinTable = 'lookup';

    $select = new Select();

    $select->from($this->table);
    $select->join($joinTable, "{$this->table}.lookup_id = {$joinTable}.id");

    $where = array();
    $where[] = "{$this->table}.enabled is true";
    $where[] = "{$joinTable}.enabled is true";
    $where[] = "UPPER({$joinTable}.system_name) ilike '{$system_name}'";

    $select->where($where);

    $sort[] = 'sort_order ASC';
    $sort[] = 'value ASC';
    $select->order($sort);

    $rowset = $this->selectWith($select);

    return $rowset;
}
}

Wo:

$resource = $this->params()->fromRoute('resource', 'BUSINESS');

Und $this->Tabelle 'lookup_items'. Wirklich alles was ich will zu tun ist, erhalten die Spalten aus den beiden verknüpften Tabellen. Ich denke, es gibt eine zf2 Möglichkeit, nur die gerade SQL-Anweisung ohne alle OO falderal, so konnte ich nur zwingen es auf diese Weise. Aber ich würde lieber arbeiten innerhalb des Rahmens so viel wie möglich.

  • Was ist der Kontext des Codes? Ist es innerhalb einer TableGateway Klasse? Wenn Sie also die Einstellung einer Person als einen Prototyp für das ResultSet? Kannst du mehr code bitte.
InformationsquelleAutor mutatron | 2013-05-22
Schreibe einen Kommentar