Zum Inhalt springen

extbase 1:n Relation

Erstellt am 27. Januar 2010 · 6 Antworten · letzte Antwort am 3. August 2012

Tags: Frage

brokemeister ·

Hallo,

ich bin dabei gerade eine Extension zu programmieren.
Folgende Objekte habe
- MyObjekt
- Category

von MyObjekt kann ich auf die Category zugreifen.

Nun möchte ich über die Category alle MyObjekte (mit der Category) zugreifen, leider klappt es irgendwie nicht... 🙁

Hat jemand schon Erfahrungen damit gesammelt?

Gruß

Malte

brokemeister ·

Hallo Stefan,

vielen Dank für deinen Hinweis. Leider Hilft mir dein Tutorial nicht weiter...

Denn ich suche eine Lösung, um alle Kunden zu bekommen die das einen Auto fahren.

Bis lang habe ich nur diese Lösung ... (die funktioniert)

class Tx_Sffluid_Domain_Model_Car extends Tx_Extbase_DomainObject_AbstractEntity {
  ...
  public function getCustomers() {
    $customerRepository = t3lib_div::makeInstance('Tx_Sffluid_Domain_Repository_CustomerRepository');
    return $customerRepository->findByCar($this);
  }
}

Gruß

Malte

marksta ·

Hallo Malte

Gibt es mittlerweile eine elegantere Lösung für diese Aufgabe? Eine direkte Verbindung zwischen Model und Repository ist ja nicht sooo schön.

Gruss
Markus

fragile74 ·

Schau dir den Extbase Kickstarter an und wie dieser 1:1,1:n - Beziehungen implementiert. Außerdem hilft das Extbase/Fluid-Buch von J.Rau und S.Kurfürst sicher weiter, dort wird eine Domäne inkl. 1:n - Beziehungen modelliert und implementiert...

wahnsinn ·

Ich hatte heute das gleiche Problem. Auch wenn der Thread hier schon alt ist, will ich trotzdem meine Lösung posten, falls irgendwer über Google vorbei kommt.

1. Getter, Setter und StorageObject-Zeug im Controller der Elternklasse (hier wäre das dann Category) ergänzen.

2. TCA der Elterntabelle erweitern

	// add relation for Extbase frontend
$TCA['tx_example_domain_model_parent']['columns']['children'] = array(
	'config' => array(
		'type' => 'inline',
		'foreign_table' => 'tx_example_domain_model_child',
		'foreign_field' => 'parent',
	),
);

3. ext_tables.sql erweitern

CREATE TABLE tx_example_domain_model_parent (
	children int(11) unsigned DEFAULT '0' NOT NULL
);