Suche…


Migrationen erstellen

yii migrate/create <name>

Das erforderliche Namensargument enthält eine kurze Beschreibung der neuen Migration. Wenn es sich bei der Migration beispielsweise um das Erstellen einer neuen Tabelle mit dem Namen news handelt, können Sie den Namen create_news_table verwenden und den folgenden Befehl ausführen

yii migrate/create create_news_table

Beispiel für eine Migrationsdatei

<?php

use yii\db\Migration;

class m150101_185401_create_news_table extends Migration
{
public function up()
{

}

public function down()
{
    echo "m101129_185401_create_news_table cannot be reverted.\n";

    return false;
}

/*
// Use safeUp/safeDown to run migration code within a transaction
public function safeUp()
{
}

public function safeDown()
{
}
*/
}

Tabelle ablegen

public function up()
{
    $this->dropTable('post');
}

Erstellen Sie sofort Tabellenfelder

yii migrate/create create_post_table --fields="title:string,body:text"

Erzeugt:

/**
 * Handles the creation for table `post`.
 */
class m150811_220037_create_post_table extends Migration
{
/**
 * @inheritdoc
 */
public function up()
{
    $this->createTable('post', [
        'id' => $this->primaryKey(),
        'title' => $this->string(),
        'body' => $this->text(),
    ]);
}

/**
 * @inheritdoc
 */
public function down()
{
    $this->dropTable('post');
}
}

Tabelle erstellen

public function up()
{
    $this->createTable('post', [
        'id' => $this->primaryKey()
    ]);
}

Spalte löschen / umbenennen / ändern

public function up()
{
    $this->dropColumn('post', 'position');

    $this->renameColumn('post', 'owner_id', 'user_id');

    $this->alterColumn('post', 'updated', $this->timestamp()->notNull()->defaultValue('0000-00-00 00:00:00'));
}

Spalte hinzufügen

public function up()
{
    $this->addColumn('post', 'position', $this->integer());
}

Migrationen rückgängig machen

yii migrate/down     # revert the most recently applied migration
yii migrate/down 3   # revert the most 3 recently applied migrations

Transaktionsmigrationen

public function safeUp()
{
    $this->createTable('news', [
        'id' => $this->primaryKey(),
        'title' => $this->string()->notNull(),
        'content' => $this->text(),
    ]);

    $this->insert('news', [
        'title' => 'test 1',
        'content' => 'content 1',
    ]);
}

public function safeDown()
{
    $this->delete('news', ['id' => 1]);
    $this->dropTable('news');
}

Eine noch einfachere Möglichkeit, Transaktionsmigrationen zu implementieren, besteht darin, Migrationscode in die safeUp() und safeDown() . Diese beiden Methoden unterscheiden sich von up() und down() dass sie implizit in einer Transaktion eingeschlossen sind. Wenn ein Vorgang in diesen Methoden fehlschlägt, werden alle vorherigen Vorgänge automatisch zurückgesetzt.

Migrieren mehrerer Datenbanken

Standardmäßig werden Migrationen auf dieselbe Datenbank angewendet, die in der Datenbankanwendungskomponente angegeben ist. Wenn Sie möchten, dass sie auf eine andere Datenbank angewendet werden, können Sie die Befehlszeilenoption db wie folgt angeben:

yii migrate --db=db2

Migrationen wiederholen

yii migrate/redo        # redo the last applied migration
yii migrate/redo 3      # redo the last 3 applied migrations

Auflisten von Migrationen

yii migrate/history     # showing the last 10 applied migrations
yii migrate/history 5   # showing the last 5 applied migrations
yii migrate/history all # showing all applied migrations

yii migrate/new         # showing the first 10 new migrations
yii migrate/new 5       # showing the first 5 new migrations
yii migrate/new all     # showing all new migrations

Migrationsverlauf ändern

yii migrate/mark 150101_185401                      # using timestamp to specify the migration
yii migrate/mark "2015-01-01 18:54:01"              # using a string that can be parsed by strtotime()
yii migrate/mark m150101_185401_create_news_table   # using full name
yii migrate/mark 1392853618                         # using UNIX timestamp

Migrationen anwenden

yii migrate

Dieser Befehl listet alle Migrationen auf, die noch nicht angewendet wurden. Wenn Sie bestätigen, dass Sie diese Migrationen anwenden möchten, wird die up () - oder safeUp () - Methode in jeder neuen Migrationsklasse nacheinander in der Reihenfolge ihrer Zeitstempelwerte ausgeführt. Wenn eine der Migrationen fehlschlägt, wird der Befehl beendet, ohne die restlichen Migrationen anzuwenden.

yii migrate 3
yii migrate/to 150101_185401                      # using timestamp to specify the migration
yii migrate/to "2015-01-01 18:54:01"              # using a string that can be parsed by strtotime()
yii migrate/to m150101_185401_create_news_table   # using full name
yii migrate/to 1392853618                         # using UNIX timestamp


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow