Discussion:
[TYPO3-german] Extbase-Problem mit 1:n Relation
Peter Linzenkirchner
2013-05-19 17:38:55 UTC
Permalink
Hallo,

folgender (eigentlich ziemlich einfacher) Ansatz:

Eine B?cherliste soll ausgegeben werden, wobei die Ausstattung der B?cher in einer zweiten Tabelle ausgelagert wurde. Man soll sowohl innerhalb der B?cherliste die Ausstattung sehen k?nnen, wie auch (?ber eine zweite Seite) alle B?cher, die eine bestimmte Ausstattung haben.

Also:

Model Book, Entity, Aggregate Root (ergibt die einfache B?cher-Liste)
Model Outfit, Entity, Aggregate Root (ergibt Liste mit Ausstattungen: Gebunden, Paperback etc. mit Liste der B?cher)

Book und Outfit sind verbunden ?ber eine 1:n Verkn?pfung.

Das Ganze funktioniert nur, wenn ich im Extension Builder wechselseitige Relationen anlege:
Book: n:1 Relation f?r Outfit
Outfit: 1:n Relation zu Books

1. Eine n:1-Relation wird vom Extension Builder im TCA als einfaches SELECT umgesetzt. Also eine DropDownliste.
2. Eine 1:n-Relation wird als Inline (IRRE) umgesetzt.

Fall 1 ist OK, so will ich es haben.
Fall 2 ist nicht OK, aber anscheinend unvermeidbar.

---

Prinzipiell funktioniert die Ausgabe, ich erhalte das gew?nschte Ergebnis im Frontend:
- B?cherliste mit Angabe der Ausstattung
- Liste der Ausstattung und ?ber die show-Action auch die Buchliste, welche diese Ausstattung haben

ABER:

Das ist fix verkn?pft mit diesem TCA.

'books' => array(
'exclude' => 0,
'label' => 'LLL:EXT:...[]...books',
'config' => array(
'type' => 'inline',
'foreign_table' => 'tx_literatur_domain_model_book',
'foreign_field' => 'outfit',
'maxitems' => 9999,
'appearance' => array(
'collapseAll' => 1,
'levelLinksPosition' => 'top',
'showSynchronizationLink' => 1,
'showPossibleLocalizationRecords' => 1,
'showAllLocalizationLink' => 1
),
),
),
Ich kann lediglich w?hlen zwischen IRRE und SELECT. Wenn ich es komplett rausnehme, dann funktionieren die Objektrelationen in Extbase nicht mehr.

Was passiert, wenn sich irgendwann tats?chlich mal 9999 IRRE-Records ansammeln? Ich kann mir nicht vorstellen, dass man das noch bearbeiten kann - ich w?rde mal behaupten, beim ?ffnen st?rzt der Browser ab. Ausserdem will ich nicht, dass die Redakteure das ?berhaupt sehen, sie sollen ?ber Books gehen und das DropDown nutzen.

Wie macht man das richtig?

Danke!
Peter

--
Xing: http://www.xing.com/profile/Peter_Linzenkirchner
Web: http://www.typo3-lisardo.de
Facebook: http://tinyurl.com/lisardo-multimedia
Peter Linzenkirchner
2013-05-20 11:50:15 UTC
Permalink
Hallo,

bah, manchmal seh ich den Wald vor lauter B?umen nicht ...

Ich brauche das Feld ja nicht in die showRecordFieldList aufnehmen, dann taucht es im Backend auch nicht auf ...

OK, damit ist das Problem gel?st bzw. war nie eins.

Gru?
Peter
Post by Peter Linzenkirchner
Hallo,
Eine B?cherliste soll ausgegeben werden, wobei die Ausstattung der B?cher in einer zweiten Tabelle ausgelagert wurde. Man soll sowohl innerhalb der B?cherliste die Ausstattung sehen k?nnen, wie auch (?ber eine zweite Seite) alle B?cher, die eine bestimmte Ausstattung haben.
Model Book, Entity, Aggregate Root (ergibt die einfache B?cher-Liste)
Model Outfit, Entity, Aggregate Root (ergibt Liste mit Ausstattungen: Gebunden, Paperback etc. mit Liste der B?cher)
Book und Outfit sind verbunden ?ber eine 1:n Verkn?pfung.
Book: n:1 Relation f?r Outfit
Outfit: 1:n Relation zu Books
1. Eine n:1-Relation wird vom Extension Builder im TCA als einfaches SELECT umgesetzt. Also eine DropDownliste.
2. Eine 1:n-Relation wird als Inline (IRRE) umgesetzt.
Fall 1 ist OK, so will ich es haben.
Fall 2 ist nicht OK, aber anscheinend unvermeidbar.
---
- B?cherliste mit Angabe der Ausstattung
- Liste der Ausstattung und ?ber die show-Action auch die Buchliste, welche diese Ausstattung haben
Das ist fix verkn?pft mit diesem TCA.
'books' => array(
'exclude' => 0,
'label' => 'LLL:EXT:...[]...books',
'config' => array(
'type' => 'inline',
'foreign_table' => 'tx_literatur_domain_model_book',
'foreign_field' => 'outfit',
'maxitems' => 9999,
'appearance' => array(
'collapseAll' => 1,
'levelLinksPosition' => 'top',
'showSynchronizationLink' => 1,
'showPossibleLocalizationRecords' => 1,
'showAllLocalizationLink' => 1
),
),
),
Ich kann lediglich w?hlen zwischen IRRE und SELECT. Wenn ich es komplett rausnehme, dann funktionieren die Objektrelationen in Extbase nicht mehr.
Was passiert, wenn sich irgendwann tats?chlich mal 9999 IRRE-Records ansammeln? Ich kann mir nicht vorstellen, dass man das noch bearbeiten kann - ich w?rde mal behaupten, beim ?ffnen st?rzt der Browser ab. Ausserdem will ich nicht, dass die Redakteure das ?berhaupt sehen, sie sollen ?ber Books gehen und das DropDown nutzen.
Wie macht man das richtig?
Danke!
Peter
--
Xing: http://www.xing.com/profile/Peter_Linzenkirchner
Web: http://www.typo3-lisardo.de
Facebook: http://tinyurl.com/lisardo-multimedia
_______________________________________________
TYPO3-german mailing list
TYPO3-german at lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
--
Xing: http://www.xing.com/profile/Peter_Linzenkirchner
Web: http://www.typo3-lisardo.de
Facebook: http://tinyurl.com/lisardo-multimedia
Jan Kornblum
2013-05-20 12:23:36 UTC
Permalink
Hi Peter,
Post by Peter Linzenkirchner
Das Ganze funktioniert nur, wenn ich im Extension Builder wechselseitige
Relationen anlege: Book: n:1 Relation f?r Outfit
Outfit: 1:n Relation zu Books
Das d?rfte wohl falsch sein, denn so wird das ganze inkonsistent.
Post by Peter Linzenkirchner
1. Eine n:1-Relation wird vom Extension Builder im TCA als einfaches SELECT
umgesetzt. Also eine DropDownliste. 2. Eine 1:n-Relation wird als Inline
(IRRE) umgesetzt.
Fall 1 ist OK, so will ich es haben.
Fall 2 ist nicht OK, aber anscheinend unvermeidbar.
Ich stand k?rzlich vor einem ?hnlichen Problem, dass ich im Extension
Builder eine n:1 Beziehung angelegt habe, ich aber die Beziehung
zwischen den beiden Models in beide Richtungen verf?gbar haben wollte.
Der Extension Builder erstellt den Code ja nur f?r die n:1 Richtung,
nicht aber den damit ein Zugriff von der Gegenseite m?glich ist.

Hier meine L?sung:

http://www.mail-archive.com/typo3-german at lists.typo3.org/msg29209.html

Die entsprechenden Relationsfelder kannst du im BE einfach ausblenden
wenn du sie nicht sehen willst. Nur Extbase braucht sie eben...

Hoffe das hilft, Jan
Peter Linzenkirchner
2013-05-20 13:04:49 UTC
Permalink
Hallo Jan,

den Thread hatte ich gefunden, was mich letztlich auf den Gedanken gebracht hat, das so zu bauen. Leider hat niemand auf deine letzte Frage geantwortet, das w?re das eigentlich interessante gewesen ... :-)

Aber ich denke, man kann das schon ?ber den Extension-Builder machen (also mit zwei Relationen) muss aber danach das TCA nachbearbeiten, analog zu dem, was du gemacht hast. Wenn ich mich richtig erinnere geht die Extbase-Anleitung von Mittwald so vor, allerdings ohne genauer zu erkl?ren, warum das erforderlich ist.

Gru?
Peter
Post by Jan Kornblum
Hi Peter,
Das Ganze funktioniert nur, wenn ich im Extension Builder wechselseitige Relationen anlege: Book: n:1 Relation f?r Outfit
Outfit: 1:n Relation zu Books
Das d?rfte wohl falsch sein, denn so wird das ganze inkonsistent.
1. Eine n:1-Relation wird vom Extension Builder im TCA als einfaches SELECT umgesetzt. Also eine DropDownliste. 2. Eine 1:n-Relation wird als Inline (IRRE) umgesetzt.
Fall 1 ist OK, so will ich es haben. Fall 2 ist nicht OK, aber anscheinend unvermeidbar.
Ich stand k?rzlich vor einem ?hnlichen Problem, dass ich im Extension Builder eine n:1 Beziehung angelegt habe, ich aber die Beziehung zwischen den beiden Models in beide Richtungen verf?gbar haben wollte. Der Extension Builder erstellt den Code ja nur f?r die n:1 Richtung, nicht aber den damit ein Zugriff von der Gegenseite m?glich ist.
http://www.mail-archive.com/typo3-german at lists.typo3.org/msg29209.html
Die entsprechenden Relationsfelder kannst du im BE einfach ausblenden wenn du sie nicht sehen willst. Nur Extbase braucht sie eben...
Hoffe das hilft, Jan
_______________________________________________
TYPO3-german mailing list
TYPO3-german at lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
--
Xing: http://www.xing.com/profile/Peter_Linzenkirchner
Web: http://www.typo3-lisardo.de
Facebook: http://tinyurl.com/lisardo-multimedia
Jan Kornblum
2013-05-20 13:11:40 UTC
Permalink
Hi Peter,
Post by Peter Linzenkirchner
Wenn ich mich richtig erinnere geht die
Extbase-Anleitung von Mittwald so vor, allerdings ohne genauer zu erkl?ren,
warum das erforderlich ist.
Ja, eine Liste in Bezug auf alle m?glichen Relationstypen und die
jeweiligen erforderlichen Settings in den beteiligten Dateien (sql,
tca, Model) w?re w?nschenswert ;)

Gr??e, Jan

Loading...