Ergebnis 1 bis 6 von 6

Thema: "Datei"-Felder aus DB auslesen

  1. #1
    Contao-Nutzer Avatar von ad1601com
    Registriert seit
    02.04.2013.
    Ort
    Erlangen
    Beiträge
    9

    Standard "Datei"-Felder aus DB auslesen

    Moin zusammen,

    durch MM angelegte Spalten für den Datentyp "file" bzw. "datei" werden in MySQL als BLOB angelegt.
    Letztlich muss sich in diesem BLOB ja der Pfad zu den Dateien befinden - über jeden von mir getesteten SELECT convert() bekomme ich hier jedoch den Pfad nicht im Klartext raus.

    Habt Ihr eine Idee wie ich diese Daten extern (d. h. ohne Contao) einlesen bzw. schreiben kann?

    Danke!

    Grüße aus Erlangen
    Andreas

  2. #2
    Contao-Nutzer Avatar von timbec
    Registriert seit
    22.09.2009.
    Ort
    Aachen
    Beiträge
    150
    Partner-ID
    7828
    User beschenken
    Wunschliste

    Standard

    Hallo,

    nein der BLOB verweist afaik auf tl_files in dem der Pfad drinnsteht.

    Grüße
    Tim

  3. #3
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    In dem BLOB befindet sich entweder die UUID der Datei, oder aber ein serialisiertes Array von UUIDs, wenn man mehrere Dateien für das Feld auswählen darf. Das Auslesen sollte also möglich sein, mit den UUIDs kannst du die Infos der Datei in der Tabelle tl_files nachschlagen.

    Beim Ändern der Inhalte wird es spannender, da neue Dateien noch keine UUIDs haben. Hier wirst du wohl mit den Contao-Klassen arbeiten müssen und die Datei dem System bekannt machen

  4. #4
    Contao-Nutzer Avatar von ad1601com
    Registriert seit
    02.04.2013.
    Ort
    Erlangen
    Beiträge
    9

    Standard

    Zitat Zitat von Thraile Beitrag anzeigen
    In dem BLOB befindet sich entweder die UUID der Datei, oder aber ein serialisiertes Array von UUIDs, wenn man mehrere Dateien für das Feld auswählen darf. Das Auslesen sollte also möglich sein, mit den UUIDs kannst du die Infos der Datei in der Tabelle tl_files nachschlagen.
    Vielen Dank! Einen "versteckten Primärschlüssel" in Form eines BIN war mir bislang nicht unter gekommen.
    Aber Wikipedia weiß beim Thema UUID das ganze etwas zu erhellen.

    Code:
    SELECT * FROM `mm_ansprechpartner` as a, tl_files as f where
    a.test_pfad = f.uuid
    Funzt! Und das war es, was ich brauche ;-)

    Zitat Zitat von Thraile Beitrag anzeigen
    Beim Ändern der Inhalte wird es spannender, da neue Dateien noch keine UUIDs haben. Hier wirst du wohl mit den Contao-Klassen arbeiten müssen und die Datei dem System bekannt machen
    Aufgabe ist die Migration des Catalog-Module in MetaModels. Dem "neuen" Contao werden die Files bekannt sein.
    Mit diesem Wissen werde ich mir jetzt ein Migrationsscript bauen können.

    Nochmals herzlichen Dank, auch an Tim.

    Grüße aus Erlangen
    Andreas

  5. #5
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Zitat Zitat von ad1601com Beitrag anzeigen
    Aufgabe ist die Migration des Catalog-Module in MetaModels. Dem "neuen" Contao werden die Files bekannt sein.
    Mit diesem Wissen werde ich mir jetzt ein Migrationsscript bauen können.
    Dann vorher das Dateisystem synchronisieren, sonst "kennt" Contao die Dateien noch nicht . Wenn du die alten Catalog-Tabellen im Zugriff hast und damit auch die passenden Pfade, kannst du die Dateien auch in deinem Migrationscript dem System bekant machen. Mit \Dbafs::addResource($strFile) kannst du direkt Dateien bekannt machen und bekommst als Return Value das passende FilesObject zurck, wo auch die UUID drin zu finden ist.

    Alternativ kannst du natürlich auch über \FilesModel::findMultipleByPaths($arrPaths) die die UUIDs aller Dateien zurückgeben lassen, wenn dein Dateisystem schon synchronisiert ist .

  6. #6
    Contao-Nutzer Avatar von ad1601com
    Registriert seit
    02.04.2013.
    Ort
    Erlangen
    Beiträge
    9

    Standard

    Das ist natürlich der ganz saubere Weg :-)

    Ich dachte daran ein Contao-Update zu fahren. Damit sollte Contao alle Dateien kennen.
    Dann wollte ich direkt auf MySQL-Ebene die UUIDs zu den Pfaden einlesen und direkt in die Tabelle schreiben.

    Glaube das ist der schnellere Weg, brauche ich ja außerdem auch nur einmalig manuell, und nicht automatisiert/regelmäßig passieren =)

    Trotzdem Danke für die Info!

    Grüße
    Andreas

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •