2010-11-27 1 views
0

Ich frage mich, ob jemand wusste, wie man Metadaten-Informationen aus einer Zend_Db_Table_Rowset-Klasse erhält, wenn Joins in der Abfrage verwendet werden, die diese Ergebnismenge erzeugt hat? Es ist einfach, wenn es nicht .. zum Beispiel beteiligt verbindet:Zend_Db_Table_Rowset: Wie bekomme ich Tabelleninformationen (Metadaten) wenn ich JOINS benutze?

foreach ($rowset as $row) { 
    $info = $row->getTable()->info(Zend_Db_Table_Abstract::METADATA); 
    Zend_Debug::dump($info); // outputs array of column info including data type 
} 

Aber wenn ich das auf eine Zeile, die aus einer Abfrage kamen Joins ich nur die Daten aus der Haupttabelle komme ich von der Auswahl wurde ..

Antwort

0

Jose, welche Art von Metadada-Informationen brauchen Sie? Vielleicht gibt es einen alternativen Weg, um zu erreichen, was Sie wollen. Da die Joins immer aus einer Tabelle stammen (und Sie sie mit anderen verbinden), denke ich, dass Sie immer die Metadaten-Informationen für die erste erhalten werden.

Irgendwie machst du dynamische Joins?

+0

Nun, ich habe tatsächlich bereits eine Umgehung erreicht. Anstatt ein $ cols-Array zu erstellen und leere Arrays an alle Join() -Aufrufe zu übergeben, habe ich die Spalten jeder Tabelle in ein eigenes Array aufgeteilt und Getter für diese Arrays erstellt. Es ist bei weitem keine großartige Lösung, aber es funktioniert. Ich möchte etwas, das mich nicht schwer involviert, eine Menge von Spaltendaten in Arrays zu codieren. Dynamische Joins Sie sagen? Wie das? Ich habe eine vordefinierte Menge an Joins, die ich mache, wenn Sie das wissen wollten. –

+0

Oh, ich verstehe, was Sie meinen. Ich schätze du hast es dann gelöst! Mit dynamischen Joins wollte ich eine Tabelle wie die unten stehende haben und Ihre Joins sollten immer wieder ausgeführt werden, egal was in der Tabelle ist. So könnte "Tabelle" der Name einer beliebigen Tabelle in der Datenbank sein und diese Zeile könnte auf eine beliebige Zeile in einer Tabelle zeigen. Ich habe das in CMSs gesehen, habe aber keine Ahnung, wie man sie in ZF verwendet! (Das ist, warum ich fragen!) CREATE TABLE 'dynamicrows' ( ' id' int (10) unsigned NOT NULL AUTO_INCREMENT, 'table' varchar (50) NULL DEFAULT, ' tableId' int (10) unsigned STANDARD NULL, PRIMARY KEY (id) ENGINE = MyISAM DEFAULT CHARSET = utf8 – Julian

+0

Sorry über die hässliche Formatierung! – Julian