Zum Inhalt springen

Über einen Schedulertask Daten mit Hilfe des Extbase-Repository abspeichern

Erstellt am 8. September 2012 · 2 Antworten · letzte Antwort am 10. September 2012

Tags: Import & Export, Frage

oveja87 ·

Hallo.
Ich programmiere gerade meine allererste Typo3-Extension und nutze dafür Extbase und Fluid.
Ich sitze seit ein paar Tagen an dem gleichen Problem und hoffe nun, dass mir hier jemand helfen

Es geht dabei um eine Extension zur Verwaltung von Immobilien.
Dort soll es eine Funktion geben, die Daten automatisch aus xml-Dateien einließt und in der Datenbank abspeichert.
Die Daten sollen über die Klasse "Tx_Immobilien_Scheduler_Task extends Tx_Scheduler_Task" eingelesen werden. Den Task habe ich bereits im Planermodul hinzugefügt und kann diesen auch ausführen.
Es werden jedoch keine Daten in der Datenbank gespeichert.

Zum Testen hatte ich in der oben genannten Klasse folgenden Code geschrieben:

/**
     * Called from scheduler
     * 
     * @return boolean TRUE on success
*/
public function execute(){
    $newImmobilie = new Tx_Immobilien_Domain_Model_Immobilie;
            
    $newImmobilie->setObjektnrIntern('123');
    $newImmobilie->setObjektnrExtern('123');
    $newImmobilie->setObjart('Grundstück');
            
    $immobilienRepository =  t3lib_div::makeInstance('Tx_Immobilien_Domain_Repository_ImmobilieRepository');
    $immobilienRepository->add($newImmobilie);
            
    return TRUE;
}

Das Objekt $newImmobilie wird korrekt mit Daten gefüllt. Es wird auch kein Fehler ausgegeben. Jedoch befinden sich wie gesagt nach Ausführung des Task keine neuen Daten in der Datenbank.

Das zweite Problem, das ich habe ist, dass ich nicht weiß, wie ich zu $newImmobilie Daten hinzufügen kann, die in der Datenbank über eine 1:n-Beziehung in der Tabelle liegen.

Beispiel:
Es gibt in der Tabelle Immobilien ein Feld "Distanzen"
Darin gibt es eine Relation zu der Tabelle "Distanzen", in der jeweils "distanz_zu" und "Distanz" gespeichert werden. (z.B. Distanz zu: Grundschule, Distanz: 300m)

Viele Grüße,
Katrin

kainobi ·

Welche Extbase Version hast Du?
Ab 4.7 gibt es CommandController + eine Integration in den Scheduler. Siehe hier:

http://forge.typo3.org/issues/27186
http://forge.typo3.org/projects/typo3v4-mvc/wiki/CommandControllerInSchedulerTask

Alles andere funktioniert nicht richtig. Also ggf. unbedingt updaten!

Das zweite Problem, das ich habe ist, dass ich nicht weiß, wie ich zu $newImmobilie Daten hinzufügen kann, die in der Datenbank über eine 1:n-Beziehung in der Tabelle liegen.

Wenn Dein Immobilien-Model richtig definiert ist, solltest Du dort sowas wie das hier haben:

public function addDistance(Tx_Immobilien_Domain_Model_Distance $distance) {
	$this->distances->attach($distance);
}

Damit kannst Du neu erzeugte Distanzen deinem Immobilen-Model hinzufügen.