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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern Sie einfach diese Zeile
zu
Raj Antwort ist die beste, aber es funktioniert nur, wenn Sie vergessen Sie nicht, fügen Sie diese fiels in Ihrem LookupItems Modell.
Und in der exchangeArray Methode :
Habe ich es herausgefunden.
Fügte dies hinzu:
Und dann diese in der Nähe des Ende:
Dieser liefert das erwartete Ergebnis, mit dem VORBEHALT, dass jetzt meine Zeilen zurückgegeben werden, als assoziative arrays anstelle von Objekten.