Seite 1 von 1

Tabelle bei Update löschen

Verfasst: 19.02.2016 10:00
von Walter91
Ich versuche mich an einer eigenen Extension. Erstellen von einer Tabelle bekomme ich hin.
Mit welchen Befehl kann ich eine vorhandene selbst erstellte Tabelle in ext/walter91/migrations/ wieder löschen?
Ich finde leider keine Doku dazu.

Re: Tabelle bei Update löschen

Verfasst: 19.02.2016 16:09
von Talk19zehn
Hi, hilft dir jenes Thema in Details:
viewtopic.php?p=1342027#p1342027
Und/oder
viewtopic.php?f=140&t=233275

Bin aber nicht Up-to-date hinsichtlich deiner angesprochen Thematik, die relativ umfangreich ist/sein kann.

Grüße

Re: Tabelle bei Update löschen

Verfasst: 19.02.2016 16:24
von Walter91
Erst mal Dank für deine Antwort. Den Beitrag von gn36 habe ich auch schon mal durchgewühlt aber nichts passendes gefunden.
Das einfügen einer Tabelle mache ich so.

Code: Alles auswählen

public function update_schema()
    {
        return array(
            'add_tables' => array(
                $this->table_prefix . 'testtable'   => array(
                    'COLUMNS' => array(
                        'testtable'                    => array('TEXT',''),
                        'testtable_bbcode_uid'        => array('VCHAR:8', ''),    
                        'testtable_bbcode_bitfield'    => array('VCHAR:255', ''),    
                        'testtable_bbcode_options'    => array('INT:11', '7'),    
                    ),                    
                ),
            ),
        );
    }
Aber mit welchen Befehl lösche ich die wieder wenn ich die zum Beispiel ändern oder ganz löschen will?

Re: Tabelle bei Update löschen

Verfasst: 19.02.2016 20:24
von gn#36
das geht ziemlich ähnlich (ich hoffe ich habe mich auf die schnelle nicht vertippt):

Code: Alles auswählen

public function revert_schema()
{
    return array(
        //Tabellen entfernen
        'drop_tables' => array('tabellenname1', 'tabellenname2'),
        // Spalten entfernen
        'drop_columns' => array(
            'tabellenname' => array(
                'spaltenname',
            ),
        ),
        // Neue Tabellenspalten
        'add_columns' => array(
            'tabellenname' => array(
                'spaltenname' => array('eigenschaften'),
            ),
        ),
        // Tabellenspalten ändern
        'change_columns' => array(
            'tabellenname' => array(
                'spaltenname' => array('neue eigenschaften'),
            ),
        ),
    ),
} 
Die Befehle können alle jeweils sowohl in der revert_schema, als auch in der update_schema Methode verwendet werden.
Siehe auch https://wiki.phpbb.com/Migrations/Schema_Changes

Du kannst auch einfach einen Blick in phpBBs Migrationen werfen, wie das da realisiert ist. Die findest du unter phpbb/db/migration/data. Es gibt auch ein paar Protoypklassen, die du für spezielle Aktionen in der Migration als Basis nehmen kannst. Zum Beispiel die container_aware_migration.php in phpbb/db/migration/, welche dir den Klassencontainer auch in der Migration zur Verfügung stellt (so dass du z.B. spezielle Klassen deiner Erweiterung oder phpBB Standardklassen darüber laden kannst), oder eine mit der du sehr leicht neue benutzerdefinierte Profilfelder anlegen kannst.

Re: Tabelle bei Update löschen

Verfasst: 20.02.2016 08:10
von Walter91
Erst mal Dank für deine Mühe.Scheint doch etwas komplizierter zu sein.
Ich hatte eigentlich gedacht es gibt einen einfachen Befehl und Tabellenname, dann ist es weg.In der Wiki finde ich erst mal nichts dazu.
Ich muss am WE das erstmal ausprobieren.

Re: Tabelle bei Update löschen

Verfasst: 20.02.2016 14:38
von gn#36
Das stimmt ja auch: Ein Befehl und die Tabelle ist weg. Schau dir meine Kommentare an - drop_tables entfernt alle im array angegebenen Tabellen.

Ist also genau ein Befehl zum Löschen, den du in der Methode revert_schema zurückliefern musst.

Ich habe lediglich versucht alle möglichen Fälle kompakt zusammen darzustellen, damit das wenn irgendwer das gleiche Problem hat auch bei Fällen wie "Spalte wieder entfernen" oder "Spalte (wieder) hinzufügen" hilft.

Re: Tabelle bei Update löschen

Verfasst: 21.02.2016 09:14
von Walter91
Hallo gn36. Hab jetzt alles durchprobiert. Dank für deine Anleitung. funktioniert alles.