Repository / Model - Daten aus DB und Dateien? [Gelöst]

  • fuzz fuzz
    Jedi-Meister
    0 x
    291 Beiträge
    5 Hilfreiche Beiträge
    12. 02. 2013, 08:08

    Moin,

    ist es möglich dass ich Daten aus der DB und aus bestimmten Dateien gleichzeitig lese? Wenn ja wie?

    Aus der DB macht Extbase das mit einem Repository ja so gut wie alleine, aber wie kriege ich dann noch mehr Daten auf Basis des Models in das Objekt um es aus dem Repository ordnungsgemäß an den Controller zu übergeben???

    Danke & Gruß

    TypoScript kann alles, auch kochen! ...Man muss nur wissen wie ;-)

    Take a look at my TYPO3 Extensions in the Repository:
    content_designer, k23_imagecrop, nn_address and more...


  • fan66766 fan66766
    T3PO
    0 x
    23 Beiträge
    0 Hilfreiche Beiträge
    12. 02. 2013, 17:34

    Hallo,

    Du meinst z.B. Einträge einer Tabelle abrufen, mit der Dein aktuell aufgerufener Controller nicht arbeitet? (z.B. bei einem Personen-Controller nur die Tabelle Personen verfügbar ist)?

  • fuzz fuzz
    Jedi-Meister
    0 x
    291 Beiträge
    5 Hilfreiche Beiträge
    12. 02. 2013, 17:38

    Leider nicht ganz... dann wäre es ja "Mapping"...

    Ich muss zum Beispiel Daten aus der Tabelle für dass das Repository da ist laden (soweit kein problem bzw. findAll). Aber dazu müssen dort auch noch ein paar Daten aus anderer Quelle kommen. In diesem Fall muss ich mehrere Dateiverzeichnisse prüfen und die Dateien nach einem bestimmten Schema spliten.

    TypoScript kann alles, auch kochen! ...Man muss nur wissen wie ;-)

    Take a look at my TYPO3 Extensions in the Repository:
    content_designer, k23_imagecrop, nn_address and more...

  • fan66766 fan66766
    T3PO
    0 x
    23 Beiträge
    0 Hilfreiche Beiträge
    12. 02. 2013, 17:45

    Hallo,

    mit Dateiverzeichnis-Suche kenne ich mich nicht aus.

    Verstehe jedoch das Gesamtproblem nicht ganz.
    Du willst Deiner Aussage nach "mehr Daten auf Basis des Models in das Objekt" bekommen. Welche Denn? Fehlen Dir Daten, die aber gespeichert sind? Willst Du das Objekt erweitern?

    Mach mal bitte ein konkretes Beispiel. Danke.

  • fuzz fuzz
    Jedi-Meister
    0 x
    291 Beiträge
    5 Hilfreiche Beiträge
    12. 02. 2013, 17:51

    OK ist etwas ungenau meinerseits... ich versuch es mal besser :)

    Wenn das Repository Daten abfragt aus der DB "entsteht" ein Object-Storage welches die Objekte mit den Daten der Datenbank (Tabelle) auf Basis des Models enthält.

    Ich will aber im Model zusätzlich noch z.B. ein Feld haben wie "MetaFileYear", welches ich aus der Datei kriege.

    Wie kriege ich das jetzt aber noch innerhalb des Repositories in das Objekt bevor das ganze ObjectStorage an den Controller zurück übergeben wird?

    TypoScript kann alles, auch kochen! ...Man muss nur wissen wie ;-)

    Take a look at my TYPO3 Extensions in the Repository:
    content_designer, k23_imagecrop, nn_address and more...

  • MajPay MajPay
    Jedi-Meister
    0 x
    345 Beiträge
    2 Hilfreiche Beiträge
    13. 02. 2013, 08:25

    Wenn ich das richtig verstanden habe...

    Würde ich in einer Model-Controller Kombination lösen. Die Property so kennzeichnen, dass sie nicht vom Repository befüllt wird (mit einer underline) und im Construct manuell befüllen. Oder die entsprechende setMethode manuell bei Bedarf aufrufen.

    Wenn die Property zB _name heißt und sie nicht befüllt ist, du aber im Template auf {name} zugreifst kannst du in der getName Methode prüfen ob die property vorhanden ist. Oder du befüllst sie gleich im Construct.

    So bleibt die Integrität deines Repositorys erhalten und dein Model hat die gewünschte Datenstruktur.

    Was hierbei allerdings nicht funktionieren würde wäre ein getAllByName. Diese Methode müsstest du übeschreiben, ein getAll ausführen und per Schleife filtern.

  • fuzz fuzz
    Jedi-Meister
    0 x
    291 Beiträge
    5 Hilfreiche Beiträge
    13. 02. 2013, 12:41

    Danke dir erstmal für deine Antwort...

    Soweit ich das richtig verstehe heißt dass die Daten wie z.B. MetaFileYear muss ich im Modell als _MetaFileYear definieren und dann z.B. bei der Methode getMetaFileYear auf die Dateiebene zugreifen die Daten auslesen und liefern?

    Die andere Möglichkeit wäre es über den Controller mit add bzw. setMetaFileYear zu befüllen richtig?

    TypoScript kann alles, auch kochen! ...Man muss nur wissen wie ;-)

    Take a look at my TYPO3 Extensions in the Repository:
    content_designer, k23_imagecrop, nn_address and more...

  • kitsunet kitsunet
    Flash Gordon
    0 x
    2559 Beiträge
    27 Hilfreiche Beiträge
    13. 02. 2013, 15:54

    Jap so sollte es funktionieren. Du musst diese properties die nicht in der Datenbank landen mit @transient annotieren! Ich würde auch vom Unterstrich abraten. Der ist nur hässlich. Bringen tut er eigentlich nichts. Welche Properties nicht in der Datenbank stehen sieht man auch an der Annotation im Code.

    Ich würde die entsprechende Logik fürs Dateisystem dann auch im Getter einbauen. Du kannst das Ergebnis ja dann in die Property schreiben und falls gefüllt von dort zurückgeben. Das ist ja dann nur für den aktuellen Request, aber wenn du die Property mehr als einmal brauchst lohnt sich das.

    config.baseURL = http://www.kitsunet.com/
    TYPO3 Flow und Neos Community Contact
    Release Manager TYPO3 Neos 1.1
    Ich habe Probleme mit den PMs hier, also schreibt mir bitte eine Mail oder über Twitter!

  • fuzz fuzz
    Jedi-Meister
    0 x
    291 Beiträge
    5 Hilfreiche Beiträge
    13. 02. 2013, 16:02

    ok danke... schwierig wird es dann nur wenn ich nach diesen feldern suchen will per $this->myRepo->findBy....

    oder gibt es da auch eine lösung?

    TypoScript kann alles, auch kochen! ...Man muss nur wissen wie ;-)

    Take a look at my TYPO3 Extensions in the Repository:
    content_designer, k23_imagecrop, nn_address and more...

  • kitsunet kitsunet
    Flash Gordon
    0 x
    2559 Beiträge
    27 Hilfreiche Beiträge
    13. 02. 2013, 16:09

    Wie sollte das funktionieren? Kann niemals gehen. Dann müsstest du schon die Daten beim anlegen deiner Objekte reinschreiben und doch mit in der Datenbank speichern. Dann kannst du auch danach suchen, aber dann sind die Daten eben nach dem Erzeugen in der Datenbank.

    config.baseURL = http://www.kitsunet.com/
    TYPO3 Flow und Neos Community Contact
    Release Manager TYPO3 Neos 1.1
    Ich habe Probleme mit den PMs hier, also schreibt mir bitte eine Mail oder über Twitter!