Zoeken…


Migraties maken

yii migrate/create <name>

Het vereiste naamargument geeft een korte beschrijving van de nieuwe migratie. Als de migratie bijvoorbeeld gaat over het maken van een nieuwe tabel met de naam news, kunt u de naam create_news_table gebruiken en de volgende opdracht uitvoeren

yii migrate/create create_news_table

Voorbeeld migratiebestand

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

Drop Table

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

Maak meteen tabelvelden

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

genereert:

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

Maak een tabel

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

Kolom neerzetten / hernoemen / wijzigen

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

Kolom toevoegen

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

Migraties terugzetten

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

Transactionele Migraties

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

Een nog gemakkelijkere manier om transactionele migraties te implementeren is om migratiecode in de safeUp() en safeDown() te plaatsen. Deze twee methoden verschillen van up() en down() doordat ze impliciet in een transactie zijn ingesloten. Als een van deze methoden mislukt, worden alle eerdere bewerkingen automatisch teruggedraaid.

Meerdere databases migreren

Standaard worden migraties toegepast op dezelfde database die is opgegeven door de db-toepassingscomponent. Als u wilt dat ze worden toegepast op een andere database, kunt u de opdrachtregeloptie db opgeven zoals hieronder wordt weergegeven:

yii migrate --db=db2

Migraties opnieuw uitvoeren

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

Migraties weergeven

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

Migratiegeschiedenis wijzigen

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

Migraties toepassen

yii migrate

Met deze opdracht worden alle migraties weergegeven die nog niet zijn toegepast. Als u bevestigt dat u deze migraties wilt toepassen, wordt de methode up () of safeUp () in elke nieuwe migratieklasse na elkaar uitgevoerd in de volgorde van hun tijdstempelwaarden. Als een van de migraties mislukt, wordt het commando afgesloten zonder de rest van de migraties toe te passen.

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow