Sök…


Skapa migreringar

yii migrate/create <name>

Det obligatoriska namnargumentet ger en kort beskrivning av den nya migrationen. Om till exempel handlar om att skapa en ny tabell med namnet nyheter kan du använda namnet create_news_table och köra följande kommando

yii migrate/create create_news_table

Exempel på migreringsfil

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

Släpp bord

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

Skapa tabellfält direkt

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

skapar:

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

Skapa bord

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

Släpp / byt namn / ändra 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'));
}

Lägg till kolumn

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

Återvända migrationer

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

Transaktionella migrationer

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

Ett ännu enklare sätt att implementera transaktionsmigreringar är att sätta migrationskoden i safeUp() och safeDown() -metoderna. Dessa två metoder skiljer sig från up() och down() att de ingår implicit i en transaktion. Som ett resultat, om någon operation i dessa metoder misslyckas, kommer alla tidigare operationer att rullas tillbaka automatiskt.

Migrera flera databaser

Som standard tillämpas migreringar på samma databas som specificeras av db-applikationskomponenten. Om du vill att de ska tillämpas på en annan databas kan du ange kommandoradsalternativet db som visas nedan:

yii migrate --db=db2

Gör om migrationer

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

Lista migrationer

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

Ändra migrationshistorik

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

Tillämpa migrationer

yii migrate

Detta kommando listar alla migrationer som inte har använts hittills. Om du bekräftar att du vill tillämpa dessa migreringar körs metoden upp () eller safeUp () i varje ny migrationsklass, en efter en, i ordningen för deras tidsstämpelvärden. Om någon av migreringarna misslyckas, kommer kommandot att sluta utan att använda resten av migreringarna.

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow