Zum Inhalt springen

Workspaces und mm-Relationen

Erstellt am 22. Juli 2009 · 1 Antwort · letzte Antwort am 23. Juli 2009

Tags: Frage

QBorg ·

Hallo alle zusammen,

ich habe eine Extension, die mehrere neue DB-Tabellen beinhaltet, die teilweise via m:m-Beziehungen (auch passend über die dazugehörigen Relationstabellen) miteinander verknüpft sind.

Bisher funktioniert alles schön, die Daten werden ausgegeben - bis ich vom Live-Workspace in z.B. den Draft-Workspace umschalte.

Dort hagelt es mir dann recht böse SQL-Fehler:

LastBuiltSQLQuery: 
SELECT uid,pid,tstamp,crdate,cruser_id,t3ver_oid,t3ver_id,t3ver_wsid,t3ver_label,
t3ver_state,t3ver_stage,t3ver_count,t3ver_tstamp,t3_origuid,sys_language_uid,
l18n_parent,l18n_diffsource,deleted,hidden,starttime,endtime,fe_group,title,
dwh_stand,shorttitle,description,datasource,hirarchie,transformation,quality,
notes,contact,current_author,history,elements,uid_local,uid_foreign,
tablenames,sorting
FROM tx_bametadata_dimension_description
WHERE
pid=-1 AND
t3ver_oid=14 AND
t3ver_wsid=-1 AND tx_bametadata_dimension_description.deleted=0

Error: Unknown column 'uid_local' in 'field list'

Den Fehler kann ich soweit nachvollziehen, da die uid_local und uid_foreign (und tablenames) nicht in der eigentlichen Tabelle, sondern in der mm-Verknüpfungstabelle vorkommen.
Aber wieso wird an der Stelle der Query auf die Weise dargestellt?! Das zugehörige TS-Objekt sagt folgendes:

DIMENSIONS = CONTENT 
DIMENSIONS {
  select {
    pidInList.field = dimension_pages
    where = 1
    andWhere = tx_bametadata_cube_dimensions_mm.uid_local = {field:uid}
    andWhere.insertData = 1
    join = tx_bametadata_cube_dimensions_mm ON (tx_bametadata_cube_dimensions_mm.uid_foreign = tx_bametadata_dimension_description.uid)
  }
  table = tx_bametadata_dimension_description
  renderObj = < plugin.tx_bametadata_pi1.dimensionListCObject
}

Seltsamerweise werden die Daten zusätzlich zu den Fehlermeldungen, die das FE (noch bewusst) zupflastern, korrekt ausgegeben - und es gibt für das ausgegebene Objekt noch mehrere andere Datensatzverknüpfungen, die nach derselben Struktur aufgebaut sind (anderer Variablenname, andere Tabelle, rest gleich), die keine SQL-Fehler bauen.

Ich vermute, hier versucht TYPO3 aus dem DIMENSIONS-SQL-Request für den Draft-Workspace passende Änderungen vorzunehmen und verwirft dabei den Join mit der MM-Verknüpfungstabelle.
Aber warum passiert das nur bei der einen Verknüpfung?! Wieso werden die Werte trotzdem vernünftig dargestellt?!

Hat jemand nen Verdacht?!

Grüsse,
Wolfgang

QBorg ·

Ich habe nun etwas weiter geforscht - das Verhalten hat sich nicht nur auf eine Tabelle beschränkt, sondern auf alle Tabellen, die in der ext_tables.php 'versioningWS' => TRUE hatten und via TypoScript in einer MM-Relation mit einem Join Daten abfragen sollten.

Bug oder Dämlichkeit meinerseits?! Fürs erste habe ich für die eingebundenen Tabellen die Versionierung ausgeschalten, ideal wärs aber trotzdem, wenn sich alle befüllbaren Extension-Tabellen auch in den Workspaces verwenden lassen würden.

Grüsse,
Wolfgang