Wir haben vor drei Jahren für einen Kunden eine Rezeptdatenbank entwickelt und diese im Laufe der Jahre auch weiterentwickelt. Die Extension läuft aktuell auf vier Typo3 Systemen des Kunden, aber nur bei einem gibt es Probleme mit mehrfach angezeigten Datensätzen.
Ich versuche es zu erklären:
Wir haben einen Datensatz "Zutatengruppe" und diesem Datensatz können per IRRE entsprechend Zutaten zugeordnet werden. Dies geschieht über eine M:M Verknüpfung, da dieser Verknüpfung noch Mengenangaben enthalten.
Ein Beispiel:
Ich lege im System drei Datensätze ("Mehl", "Eier" und "Milch" ) in der Tabelle Zutaten an. Dann erstelle ich einen neuen Datensatz ("Pfannkuchen" ) in der Tabelle Zutatengruppe und weise diesem Datensatz mittels IRRE Formular die drei Zutaten zu und gebe bei diesen drei Zuordnungen jeweils die Mengenangaben an.
Nun ist es so, dass der Kunde schon über 400 Zutaten und über 300 Zutatengruppen im Laufe Zeit eingepflegt hat und auf einmal beschwert er sich, dass wenn er einer Zutatengruppe eine neue Zutat hinzufügen möchte alle Zutaten mehrfach aufgelistet sind. So taucht zum Beispiel in der DropDown die Zutat "Mehl" 12 mal auf, obwohl sie nur einmal in der Datenbank steht. Wenn ich das SQL erstellen würde, würde ich erst einmal ein SELECT DISTINCT probieren, nur bin ich beim Liste Werkzeug nicht für das SQL zuständig und weiß daher gerade nicht, wie ich an dieses Problem dran gehen könnte. Ich hatte schon foreign_unique ausprobiert, aber das hatte keine Auswirkungen.
Wir wissen zudem auch leider nicht, seit wann das Problem besteht, weil der Kunde aufgrund interner Umstrukturieren eventuell bei diesem System schon über ein Jahr nicht mehr dran war. Da liegt es auch im Möglichen, dass das Problem bei einem Update von Typo3 4.3 auf 4.5 entstanden ist, aber bis heute nicht aufgefallen ist. Was mich nur ein wenig stutzig macht ist, dass die Extension in vier technisch identisches Systemen läuft (alle 4.5 und auf dem gleichen Server mit gleichen localconf Einstellungen) und nur bei einem tritt das Problem auf. Die Logfiles vom Apache geben leider nichts her.
Für jeden Hinweis bin ich dankbar. Auch falls einer ein ähnliches Problem hatte bei anderen Voraussetzungen würde ich mich freuen zu erfahren, wie das Problem angegangen wurde.
Aus dem TCA (gekürzte Fassung, damit es übersichtlich bleibt):
$TCA['tx_wwrecipe_ingredients'] = array (
// gekürzt
'columns' => array (
// gekürzt
'ingredientgroup' => array (
'exclude' => 1,
'label' => 'LLL:EXT:ww_recipe/locallang_db.xml:tx_wwrecipe_ingredients.ingredientgroup',
'config' => array (
'type' => 'inline',
'foreign_table' => 'tx_wwrecipe_ingredientgroup_ingredients_mm',
'foreign_field' => 'ingredientsid',
'foreign_label' => 'ingredientgroupid',
),
),
),
// gekürzt
);
$TCA['tx_wwrecipe_ingredientgroup'] = array (
// gekürzt
'columns' => array (
// gekürzt
'ingredients' => array (
'exclude' => 1,
'label' => 'LLL:EXT:ww_recipe/locallang_db.xml:tx_wwrecipe_ingredientgroup.ingredients',
'config' => array (
'type' => 'inline',
'foreign_table' => 'tx_wwrecipe_ingredientgroup_ingredients_mm',
'foreign_field' => 'ingredientgroupid',
'foreign_label' => 'ingredientsid',
),
),
// gekürzt
),
// gekürzt
);
$TCA['tx_wwrecipe_ingredientgroup_ingredients_mm'] = array(
'ctrl' => $TCA['tx_wwrecipe_ingredientgroup_ingredients_mm']['ctrl'],
'interface' => array (
'showRecordFieldList' => 'ingredientgroupid,ingredientsid,quantity'
),
'feInterface' => $TCA["tx_wwrecipe_ingredientgroup_ingredients_mm"]["feInterface"],
'columns' => array(
'ingredientgroupid' => array(
'label' => 'LLL:EXT:ww_recipe/locallang_db.xml:tx_wwrecipe_ingredientgroup',
'config' => array(
'type' => 'select',
'foreign_table' => 'tx_wwrecipe_ingredientgroup',
'size' => 1,
'minitems' => 1,
'maxitems' => 1,
),
),
'ingredientsid' => array(
'label' => 'LLL:EXT:ww_recipe/locallang_db.xml:tx_wwrecipe_ingredients',
'config' => array(
'type' => 'select',
'foreign_table' => 'tx_wwrecipe_ingredients',
'foreign_table_where' => 'ORDER BY tx_wwrecipe_ingredients.name',
'size' => 1,
'minitems' => 1,
'maxitems' => 1,
)
),
'quantity' => array(
'label' => 'LLL:EXT:ww_recipe/locallang_db.xml:tx_wwrecipe_ingredientgroup_ingredients_mm.quantity',
'config' => array(
'type' => 'input',
'size' => '30',
),
),
),
'types' => array (
'0' => array('showitem' => 'hidden;;1,ingredientgroupid,ingredientsid,quantity')
),
'palettes' => array (
'1' => array('showitem' => '')
)
);