Ankündigung

Einklappen
Keine Ankündigung bisher.

Zwei Tagging-Tabellen mergen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Tim
    antwortet
    Wenn diese Grundvoraussetzungen erfüllt sind, kann eigentlich nur noch ein aktiver Backend-Filter die Darstellung unterbinden. Mehr fällt mir nicht ein.

    Das klappt ohne Probleme. Erstellt einen neuen Tag "Mein Tag" auf Wurzelebene (kein Eltern-Element : pid = 0)

    initconfig.php

    Code:
    $arrSet = array
    (
    'pid' => 0,
    'tstamp' => time(),
    'title' => 'Mein Tag'
    );
    \Contao\Database::getInstance()->prepare("INSERT INTO tl_pct_customelement_tags %s")->set( $arrSet )->execute();

    Das ganze mit einem Kind gefüttert sieht so aus:
    Code:
    // Tag auf Root-Ebene
    $arrSet = array
    (
    'pid' => 0,
    'tstamp' => time(),
    'title' => 'Mein Tag'
    );
    $objStatement = \Contao\Database::getInstance()->prepare("INSERT INTO tl_pct_customelement_tags %s")->set( $arrSet )->execute();
    
    // Kind-Element in vorab angelegten Tag platzieren. Siehe pid Wert
    $arrSet = array
    (
    'pid' => $objStatement->__get('insertId'), // ID des angelegten Tags aus dem vorherigen Statement
    'tstamp' => time(),
    'title' => 'Mein Kind'
    );
    $objStatement = \Contao\Database::getInstance()->prepare("INSERT INTO tl_pct_customelement_tags %s")->set( $arrSet )->execute();
    Zuletzt geändert von Tim; 26.04.2023, 14:11.

    Einen Kommentar schreiben:


  • eblick
    antwortet
    Zitat von Tim Beitrag anzeigen
    .

    Id ist increment (erhöht sich also immer von selbst). Du musst für neue Einträge die neu gesetzt ID abfangen und eventuelle Kind-Einträge auf diese ID mappen..
    Habe ich tatsächlich alles berücksichtigt. Alle Ids haben eine entsprechende PID. Die Tabelle war nach dem Import in sich plausibel. Den Increment habe ich für den Import deaktiviert und anschließend mit dem höchsten Wert fortgeführt.

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Das ist eine Eltern-Kind-Tabelle. Wenn du pid > 0 setzt, muss es einen Eintrag mit dieser id geben usw. usw.

    Id ist increment (erhöht sich also immer von selbst). Du musst für neue Einträge die neu gesetzt ID abfangen und eventuelle Kind-Einträge auf diese ID mappen.

    Einfach blind rein geht für verschachtelte bzw. referenzierte Tabellen nicht.
    Zuletzt geändert von Tim; 25.04.2023, 12:07.

    Einen Kommentar schreiben:


  • eblick
    antwortet
    tstamp ist komplett gesetzt, siehe Anhang.
    Angehängte Dateien

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Zitat von eblick Beitrag anzeigen
    Werde ich mal testen. Das einzige, was mir spontan auffällt:
    Immer wenn ich neue Tags in die bestehende Tags Tabelle importiere, werden diese spätestens beim Aufruf über das Backend wieder gelöscht.
    Kann es sein, dass ein Import über die DB hier gar nicht funktioniert?
    Du musst zwingend das tstamp Feld befüllen.
    Contao löscht alles, was keinen Wert im tstamp gesetzt hat (gilt für alle durch Contao gemanagted Tabellen)
    Kein tstamp gilt für Contao als ungespeichert und wird im reviseTable Hook gekillt. (wenn man sich wieder in der Listen-Ansicht befindet).

    -> wie frisch angelegt, aber noch nicht Speichern geklickt. Drückt man Zurück ohne Speichern, gleicher Effekt.

    Einen Kommentar schreiben:


  • eblick
    antwortet
    Werde ich mal testen. Das einzige, was mir spontan auffällt:
    Immer wenn ich neue Tags in die bestehende Tags Tabelle importiere, werden diese spätestens beim Aufruf über das Backend wieder gelöscht.
    Kann es sein, dass ein Import über die DB hier gar nicht funktioniert?

    Einen Kommentar schreiben:


  • Tim
    antwortet
    "Sinnvoll" ist gut . Das wird Handarbeit mit Lookup-Arrays. Ich bin mir sicher das Grundprinzip hab ich in anderen Threads bereits aufgezeigt.

    Einen Kommentar schreiben:


  • eblick
    hat ein Thema erstellt Zwei Tagging-Tabellen mergen.

    Zwei Tagging-Tabellen mergen

    Hallo Tim,

    wir müssen zwei Tagging-Tabellen aus separaten CC Installationen zusammenführen.
    Hast du einen sinnvollen Ansatz dazu?

Lädt...
X