[TYPO3-german] TCA: mm-Relation-Fragen

g4-lisz at tonarchiv.ch g4-lisz at tonarchiv.ch
Tue Aug 26 15:16:19 CEST 2014


Hallo Stefan,

habe mir jetzt nicht so groß den Kopf zerbrochen, sondern nur auf die
Schnelle folgende Idee:
Dein Produkt-Objekt kriegt zwei Properties, die die MM-Tabelle
referenzieren. Einmal "von links" und ein mal "von rechts", also Prop1
"verweist auf" und Prop2 "referenziert von".
Im TCA des 2. Feldes einfach das Ganze umdrehen. Beim Auslesen der
verwandten Produkte musst Du dann natürlich beide Props zusammen zählen.

Grüße,
Till

On 08/23/2014 10:29 AM, Stefan Padberg wrote:
> Hallo Hendrik,
>
> vielen Dank fürs Mitdenken.
>
> Den Weg über Kategorien zu gehen, finde ich nicht passend. Es sind ja
> keine Kategorien. Wie sollten die heißen? Das müsste ich ja vorher
> festlegen.
>
> Der Vorschlag hingegen, eine Tabelle "Verwandte Produkte"
> hinzuzufügen, scheint mir sehr passend zu sein. Denn diese Beziehung
> ist offensichtlich keine klassische Relation im Sinne von "A hat B".
> Klassische Relationen kann man nicht umdrehen: "B hat A" würde keinen
> Sinn machen.
>
> Aber in meinem Fall geht das. "A ist verwandt mit B" heißt automatisch
> "B ist verwandt mit A". Ich mache mir mal Gedanken zur Umsetzung.
>
>
>
>
> Nochmal zurück zum TCA. Ich hatte mal in einem Projekt folgendes
> Szenario:
>
> Es gab zwei Organisationstypen: Organisationen und
> Hilfsorganisationen, jeweils mit einer eigenen Tabelle/Repository. Die
> Relationen lauteten:
>
> Org A "wird unterstützt von" HiOrg 1, HiOrg 2, HiOrg 3
> Im Backend konnte man im Feld "Hilfsorganisationen" alle HiOrgs
> auswählen.
>
> Der Weg zurück ging auch:
> HiOrg 1 "unterstützt" Org. A, Org B, Org C
> Auch hier konnte man im Backend im Feld "Unterstützte Organisationen"
> alle Orgs auswählen.
>
> Und wenn man das getan hatte und schaute beim Datensatz von "Org A"
> nach, stand dort richtig "HiOrg 1" als Unterstützer.
>
> Im vorliegenden Fall gibt es aber nur eine Tabelle für uid_local und
> für uid_foreign. Kann man den TCA so konfigurieren, dass er
> gleichzeitig beide Richtungen der Relation einträgt? Also wenn Prod1
> "verwandt mit" Prod2 ist, sollte in der mm-Tabelle stehen:
>
> uid_local | uid_foreign
> 1           2
> 2           1
>
> Und beide Einträge sollten auch wieder gelöscht werden, wenn ich die
> Relation lösche.
>
> Es gibt da so viele Felder im config-Array des select-Typen. Aber die
> Beschreibung ist so furchtbar knapp und nichtssagend. Ich hab das
> Gefühl, dass man damit mehr machen kann, als man denkt. Deshalb würde
> ich das gerne nochmal abklären, bevor ich den oben angedachten Weg gehe.
>
> Was bewirken z.B.
>
> MM_hasUidField
> MM_insert_fields
> MM_match_fields
> MM_oppositeUsage
>
> Jemand eine Idee? Kann man damit etwas machen im oben angedeuteten Sinn?
>
> Beste Grüße
> Stefan
>
>
> Am 22.08.2014 um 21:31 schrieb Hendrik Reimers (KERN23.de):
>> Hey,
>>
>> interessante Aufgabe, spontan wüsste ich auch nicht ob das tatsächlich
>> geht wie du es möchtest.
>>
>> Alternativ würde ich eine Form von "Kategorien" einführen, sprich alle
>> Produkte einer Kategorie gehören zusammen. Setzt natürlich einen neuen
>> Datensatztypen voraus. Eine weitere Möglichkeit wäre natürlich ebenfalls
>> einen neuen Datensatztypen anzulegen namens z.B. "Gemeinsame Produkte",
>> wo du dann innerhalb dieses Datensatzes alle zusammenhängende Produkte
>> auswählst. Wobei ich zu der "Kategorie" (Alternative #1) tendiere.
>>
>> Sollte es doch möglich sein wie du es benötigst, bin ich auf die Lösung
>> ebenfalls so sehr gespannt :-)
>>
>> Grüße
>> Henny
>>
>>
>>
>> Am 22.08.2014 20:04, schrieb Stefan Padberg:
>>> Hallo,
>>>
>>> ich habe da eine mehr konzeptionelle Frage an die TCA-Cracks -
>>> vielleicht mal was zum Knobeln für regenreiche Wochenenden...puh
>>>
>>> Ich habe eine Reihe von Produktdatensätzen. Es soll möglich gemacht
>>> werden, dass zu jedem Produkt verwandte Produkte eingegeben werden
>>> können.
>>>
>>> Ich habe also ein Feld "relatedproducts" in die Datenstruktur für die
>>> Produkte eingefügt und eine mm_Tabelle angelegt. Jetzt kann ich von
>>> einem Produkt aus verwandte Produkte einpflegen.
>>>
>>> Der Weg rückwärts geht aber nicht, denn ich erwarte natürlich, wenn
>>> Produkt A Produkt B und Produkt C als verwandte Produkte hat, dass
>>> Produkt A bei B und C jeweils auch als verwandtes Produkt auftaucht.
>>>
>>> In der mm-Tabelle steht quasi
>>>
>>> uid_local | uid_foreign
>>>
>>> 1           2
>>> 1           3
>>>
>>> Das Feld relatedproducts ist per TCA so konfiguriert, dass es von nur
>>> uid_local ausgeht. Es müsste aber gleichzeitig auch von uid_foreign
>>> ausgehen. Und ich vermute, dass das nicht geht.
>>>
>>> Mache ich da einen Denkfehler? Oder weiß ich nur nicht, wie man das
>>> Feld
>>> richtig konfiguriert?
>>>
>>>
>>> Mein TCA-config für das Feld sieht so aus:
>>>
>>>      'config' => array(
>>>          'type' => 'select',
>>>          'foreign_table' => 'tx_products_domain_model_product',
>>>          'foreign_table_where' => ' AND
>>> tx_products_domain_model_product.sys_language_uid=0 ORDER BY
>>> tx_products_domain_model_product.name',
>>>          'MM' => 'tx_products_product_relatedproduct_mm',
>>>          'MM_opposite_field' => 'relatedproducts',
>>>          'size' => 10,
>>>          'minitems' => 0,
>>>          'autoSizeMax' => 30,
>>>          'maxitems' => 9999,
>>>          'multiple' => 1,
>>>      ),
>>>
>>> (Das mit der sys_language_uid ist noch ein zweites Problem: es werden
>>> alle Datensätze zur Auswahl gestellt, sowohl die originalen als auch
>>> die
>>> übersetzten. Und die Relation, die ich im Original-Datensatz eingebe,
>>> wird leider nicht für die übersetzten Datensätze übernommen. Dafür
>>> brauche ich auch noch eine Lösung... Mit der obigen Where-Klausel
>>> filtere ich zumindest mal die übersetzten Datensätze behelfsmäßig raus.
>>> Aber wie ich TCA kenne, gibt es dafür bestimmt eine bessere Lösung. )
>>>
>>> Ich freue mich auf ein paar inspirierende Gedanken.
>>>
>>> Beste Grüße
>>> Stefan
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>
>
>



More information about the TYPO3-german mailing list