Zum Inhalt springen

pi_exec_query mit $mm_cat Relation

Erstellt am 5. Juni 2007 · 4 Antworten · letzte Antwort am 5. Juni 2007

Tags: Frage

bagalude ·

Hi nochmal 😃

leider habe ich noch eine Frage bei welcher mir Google nicht wirklich weiterhilft.... Und zwar verwende ich ein pi_exec_query mit einer $mm Relation damit über eine Selectbox eine Vorauswahl für die Ausgabe von table1 je nach dem welche relation zu table2 besteht getroffen werden kann.
Hierfür fülle ich eine Selectbox mit einem exec_SELECT_mm_query aus table2. Anschließend ziehe ich die Daten mit einem pi_exec_query wobei ich hier die Relation wieder herstelle und als $where table1_table2_mm.uid_foreign mit der aus der Selectbox stammenden $var (uid table2) abgleiche.

$mm_cat=array('table'=>'table2','mmtable'=>'table1_table2_mm';
$where = 'AND table1_table2_mm.uid_foreign='.$var;

$res = $this->pi_exec_query('table1',1,$where,$mm_cat,'','');

Das funktioniert auch soweit alles. Allerdings werden mir alle Datensätze die in der mm_tabelle unter sorting etwas Anderes als "0" stehen haben mit dem pi_exec_query nicht angezeigt. Weiss wer warum? Bzw. wofür Typo3 das Feld Sorting verwendet?

lg
Marc

steffenk ·

warum benutzt Du nicht die extra dafür vorgesehenen Funktionen ?

function exec_SELECT_mm_query($select,$local_table,$mm_table,$foreign_table,$whereClause='',$groupBy='',$orderBy='',$limit='')

bagalude ·

Für die Generierung der Selectbox nehme ich besagtes:
exec_SELECT_mm_query($select,$local_table,$mm_table,$foreign_table,$whereClause='',$groupBy='',$orderBy='',$limit='')

Anschliessend muss ich aber mit einem pi_exec_query weiter machen da ich das $res mit:

pi_list_makelist($res);
pi_list_browseresults($showResultCount=1,$tableParams='',$wrapArr, $pointerName = 'pointer', $hscText = FALSE);

ausgebe und hierfür einige "zusätzliche" Werte des pi_exec_query brauche wie z.B. "pid".

Alternativ gäbe es natürlich die Möglichkeit ein pi_exec_query "nachzubauen", aber das kann ja nicht Sinn und Zweck der Sache sein...
Zumal das pi_exec_query ja extra eine $mm_cat hat welche für mm Verbindungen steht.

pi_exec_query($table,$count=0,$addWhere='',$mm_cat='',$groupBy='',$sorting='')

Wie gesagt geht es ja auch solange in der mm-Tabelle unter "sorting" 0 als value steht. Wobei dieser Wert meines wissens nur für die Sortierung einer etwaigen Multiselectbox im BE steht, also an sich überhaupt keinen Einfluss auf mein Query haben sollte.
Hier mal ein erzeugter Debug vom pi_exec_query:

aller	t3lib_DB::exec_SELECTquery
ERROR	Unknown column 'debug' in 'where clause'
lastBuiltQuery	SELECT count(*)
debug_backtrace	
line	
function	exec_SELECTquery
class	t3lib_DB
object	
type	->
args	
0	count(*)
1	tx_meineextension_laden,tx_meineextension_orte,tx_meineextension_laden_orte_mm
2	tx_meineextension_laden.uid=tx_meineextension_laden_orte_mm.uid_local AND tx_meineextension_orte.uid=tx_meineextension_laden_orte_mm.uid_foreign

AND tx_meineextension_laden.pid IN (73)
AND tx_meineextension_laden.deleted=0 AND tx_meineextension_laden.hidden=0 AND (tx_meineextension_laden.starttime<=1181051513) AND (tx_meineextension_laden.endtime=0 OR tx_meineextension_laden.endtime>1181051513) AND tx_meineextension_laden.fe_group IN (0,-1) AND debug AND tx_meineextension_laden_orte_mm.uid_foreign=3
AND (tx_meineextension_laden.bezeichnung LIKE '%test%' OR tx_meineextension_laden.url LIKE '%test%')

An sich sieht das auch alles in Ordnung aus. Deswegen stehe ich ja auch so auf dem Schlauch... #angry#

steffenk ·

ich kann Dir da nicht helfen, da ich nie mit den pi_base Recordfunktionen arbeite, ich mach das lieber selber.

bagalude ·
steffenk schrieb

ich kann Dir da nicht helfen, da ich nie mit den pi_base Recordfunktionen arbeite, ich mach das lieber selber.

Ich sollte es vielleicht auch lieber lassen... #paralyzed#
Danke trotzdem für den Versuch! 😃