Szukaj…


Tworzenie migracji

yii migrate/create <name>

Wymagany argument nazwy zawiera krótki opis nowej migracji. Na przykład, jeśli migracja dotyczy tworzenia nowej tabeli o nazwie news, możesz użyć nazwy create_news_table i uruchomić następującą komendę

yii migrate/create create_news_table

Przykład pliku migracji

<?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()
{
}
*/
}

Zrzuć stół

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

Utwórz pola tabeli od razu

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

Generuje:

/**
 * 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');
}
}

Utwórz tabelę

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

Upuść / Zmień nazwę / Zmień kolumnę

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'));
}

Dodaj kolumnę

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

Cofanie migracji

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

Migracje transakcyjne

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');
}

Jeszcze łatwiejszym sposobem implementacji migracji transakcyjnych jest umieszczenie kodu migracji w safeUp() i safeDown() . Te dwie metody różnią się od up() i down() tym, że są niejawnie ujęte w transakcji. W rezultacie, jeśli jakakolwiek operacja w tych metodach zakończy się niepowodzeniem, wszystkie wcześniejsze operacje zostaną automatycznie wycofane.

Migracja wielu baz danych

Domyślnie migracje są stosowane do tej samej bazy danych określonej przez komponent aplikacji db. Jeśli chcesz je zastosować do innej bazy danych, możesz określić opcję wiersza polecenia db, jak pokazano poniżej:

yii migrate --db=db2

Ponawianie migracji

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

Migracje list

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

Modyfikacja historii migracji

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

Stosowanie migracji

yii migrate

To polecenie wyświetli listę wszystkich migracji, które dotychczas nie zostały zastosowane. Jeśli potwierdzisz, że chcesz zastosować te migracje, uruchomi metodę up () lub safeUp () w każdej nowej klasie migracji, jedna po drugiej, w kolejności ich wartości znaczników czasu. Jeśli którakolwiek z migracji zakończy się niepowodzeniem, polecenie zostanie zamknięte bez zastosowania reszty migracji.

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow