Hallo Eike. Hast du das TCA selbst geschrieben oder hast du es dir erzeugen lassen? Funktioniert die Zuordnung denn im TYPO3-Backend oder ist die schon dort leer, wenn du die Bearbeitung von der Playlist-Seite bearbeitest?
Wenn deine MM-Tabelle "media_playlist_mm" heißt bedeutet das, dass Media deine Local-Side ist und Playlist deine Foreign-Side. Laut Dokumentation von MM_opposite_field gehört das ins TCA der Foreign-Side und muss dort den Property-Name der Local-Side benennen. Demnach muss das MM_opposite_field ins TCA von Playlist, nicht in das von Media. http://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Select/Index.html Leider lässt das aktuelle Dokumentationsformat keine Referenz auf ein Attribut zu. Und ich hätte als Beispiel nicht unbedingt die Unterscheidung zwischen "a.employees" und "b.employers" verwendet. Gruß, Stephan Schuler Web-Entwickler Telefon: +49 (911) 539909 - 0 E-Mail: stephan.schu...@netlogix.de Website: media.netlogix.de -- netlogix GmbH & Co. KG IT-Services | IT-Training | Media Andernacher Straße 53 | 90411 Nürnberg Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99 E-Mail: i...@netlogix.de | Internet: http://www.netlogix.de netlogix GmbH & Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338) Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634) Umsatzsteuer-Identifikationsnummer: DE 233472254 Geschäftsführer: Stefan Buchta, Matthias Schmidt ________________________________________ Von: typo3-german-boun...@lists.typo3.org [typo3-german-boun...@lists.typo3.org]" im Auftrag von "Eike Starkmann [starkm...@undkonsorten.com] Gesendet: Mittwoch, 13. März 2013 17:54 An: German TYPO3 Userlist Betreff: Re: [TYPO3-german] Problem extbase bidirektionale mm Beziehung Ich habe dazu mal ein Ticket gemacht, da ich glaube das das Problem in extbase liegt: http://forge.typo3.org/issues/46243 Bis denne, Eike On 08.03.2013 14:00, Eike Starkmann wrote: > > Hallo, > ich habe ein Problem mit einer Extbase Extension die ich gerade schreibe. > Folgende Situation: > > Ich habe ein Objekt Media und ein Objekt Playlist > Zwischen diesen besteht eine bidirektionale M:M Beziehung. > > Ich möchte jetzt zu einem bestimmten Medium (M) alle anderen Medien > ausgeben, die in der gleichen Playliste (P) sind. > > Naive Vorgehensweise (pseudocode): > > //alle Playlisten zu dem das Medium gehört > for M.paylist as playlistItem { > > //alle Medien in der aktuellen playliste > for playlistItem.media as mediaItem{ > ausgabe mediaItem > } > } > Und genau die innere Schleife funktioniert nicht und liefert einen > SQL-Fehler. > > Hier ist der relevante Code: > > class Tx_Medialibrary_Domain_Model_Playlist extends > Tx_Extbase_DomainObject_AbstractEntity { > > /** > * Media of the playlist > * > * @var > Tx_Extbase_Persistence_ObjectStorage<Tx_Medialibrary_Domain_Model_Media> > * @lazy > */ > protected $media; > > /** > * Adds a Media > * > * @param Tx_Medialibrary_Domain_Model_Media $media > * @return void > */ > public function addMedia(Tx_Medialibrary_Domain_Model_Media $media) { > $this->media->attach($media); > } > > /** > * Removes a Media > * > * @param Tx_Medialibrary_Domain_Model_Media $mediaToRemove The > Category to be removed > * @return void > */ > public function removeMedia(Tx_Medialibrary_Domain_Model_Media > $mediaToRemove) { > $this->media->detach($mediaToRemove); > } > > /** > * Returns the Media > * > * @return > Tx_Extbase_Persistence_ObjectStorage<Tx_Medialibrary_Domain_Model_Media> > $media > */ > public function getMedia() { > return $this->media; > } > > /** > * Sets the media > * > * @param > Tx_Extbase_Persistence_ObjectStorage<Tx_Medialibrary_Domain_Model_Media> > $media > * @return void > */ > public function setMedia(Tx_Extbase_Persistence_ObjectStorage > $media) { > $this->media = $media; > } > > } > > TCA: > > $TCA['tx_medialibrary_domain_model_playlist'] = array( > ... > "media" => Array ( > "exclude" => 1, > "label" => > "LLL:EXT:medialibrary/Resources/Private/Language/locallang_db.xml:tx_medialibrary_domain_model_playlist.media", > > "l10n_mode" => "exclude", > "config" => Array ( > "type" => "group", > "internal_type" => "db", > "allowed" => > "tx_medialibrary_domain_model_media", > "size" => 10, > "minitems" => 0, > "maxitems" => 100, > "MM" => "tx_medialibrary_media_playlist_mm", > "MM_opposite_field" => "media", > ) > ), > ... > > $TCA['tx_medialibrary_domain_model_media'] = array( > ... > "playlist" => Array ( > "exclude" => 1, > "label" => "playlist", > "l10n_mode" => "exclude", > "config" => Array ( > "type" => "select", > "allowed" => > "tx_medialibrary_domain_model_playlist", > 'foreign_table' => > 'tx_medialibrary_domain_model_playlist', > "size" => 10, > "minitems" => 0, > "maxitems" => 100, > "MM" => "tx_medialibrary_media_playlist_mm", > ) > ), > ... > > Fluid showAction von Media: > > <f:for each="{media.playlist}" as="playlistItem"> > {playlistItem} > <f:for each="{playlistItem.media}" as="mediaItem"> > {mediaItem} > </f:for> > </f:for> > > SQL Fehler: > > SELECT .* FROM tx_medialibrary_media_playlist_mm LEFT JOIN ON > tx_medialibrary_media_playlist_mm.uid_local = .uid WHERE > tx_medialibrary_media_playlist_mm.uid_foreign = '1' AND > (tx_medialibrary_domain_model_media.type='Tx_Medialibrary_Domain_Model_Media' > OR > tx_medialibrary_domain_model_media.type='Tx_Medialibrary_Domain_Model_Media_Video' > OR > tx_medialibrary_domain_model_media.type='Tx_Medialibrary_Domain_Model_Media_Audio') > ORDER BY tx_medialibrary_media_playlist_mm.sorting_foreign ASC > > > Es scheint also so, das bei tx_medialibrary_media_playlist_mm.uid_local > = .uid Tx_Medialibrary_Domain_Model_Media nicht aufgelöst wird. > > Es müsste doch tx_medialibrary_media_playlist_mm.uid_local = > Tx_Medialibrary_Domain_Model_Media.uid heissen, oder? > > > Ist das jetzt ein Bug ober mache ich hier grundlegend was Falsch? > > Bis denne, Eike > -- EIKE STARKMANN starkm...@undkonsorten.com +49.30.20236354 [fon] UNDKONSORTEN GBR Waldemarstr. 38 10999 Berlin www.undkonsorten.com +49.30.20236354 [fon] +49.30.20236354-9 [fax] thomas alboth, felix althaus + jochen biedermann [gesellschafter] _______________________________________________ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german _______________________________________________ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german