交易迁移

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

实现事务性迁移的一种更简单的方法是将迁移代码放在 safeUp()safeDown() 方法中。这两种方法与 up()down() 的不同之处在于它们隐含在事务中。因此,如果这些方法中的任何操作失败,则所有先前的操作将自动回滚。