Don't you speak portuguese? Translate this site with Google Translator

Pensamento do Dia

Não somos felizes quando todos gostam de nós e nos ajudam, mas sim quando gostamos dos outros e os ajudamos. (Autor desconhecido)

15.1 - Migrate

15.1 - Migrate


Não se preocupe com falhas, preocupe-se com as chances que você perde quando não tenta. (Jack Canfield)


Aqui segue um exemplo de migração:

 

<?php
use Migrations\AbstractMigration;

class CreateProducts extends AbstractMigration
{
    /**
     * Change Method.
     *
     * More information on this method is available here:
     * http://docs.phinx.org/en/latest/migrations.html#the-change-method
     * @return void
     */
    public function change()
    {
        $table = $this->table('products');
        $table->addColumn('name', 'string', [
            'default' => null,
            'limit' => 255,
            'null' => false,
        ]);
        $table->addColumn('description', 'text', [
            'default' => null,
            'null' => false,
        ]);
        $table->addColumn('created', 'datetime', [
            'default' => null,
            'null' => false,
        ]);
        $table->addColumn('modified', 'datetime', [
            'default' => null,
            'null' => false,
        ]);
        $table->create();
    }
}

Salvar em
config/Migrations/20190519085224_Products.php

Veja o formato: YYYYMMDDHHMMSS_Products.php


Também podemos criar a migration usando o bake:

bin/cake bake migration CreateProducts name:string description:text created modified

Você pode criar um arquivo de migração vazio caso deseje ter um controle total do que precisa ser executado. Para isto, apenas omita a definição das colunas:

bin/cake migrations create MyCustomMigration

Criar a tabela ou as tabelas do(s) Migration(s)

bin/cake migrations migrate

Limpar todo o banco, excluindo todas as tabelas

bin/cake migrations rollback


Nomes de campos e tipos

fieldName:fieldType[length]:indexType:indexName

Por exemplo, veja formas válidas de especificar um campo de e-mail:
    • email:string:unique
    • email:string:unique:EMAIL_INDEX
    • email:string[120]:unique:EMAIL_INDEX
O parâmetro length para o fieldType é opcional e deve sempre ser escrito entre colchetes
Os campos created e modified serão automaticamente definidos como datetime.
Os tipos de campos são genericamente disponibilizados pela biblioteca Phinx. Eles podem ser:
    • string
    • text
    • integer
    • biginteger
    • float
    • decimal
    • datetime
    • timestamp
    • time
    • date
    • binary
    • boolean
    • uuid

Há algumas heurísticas para a escolha de tipos de campos que não são especificados ou são definidos com valor inválido. O tipo de campo padrão é string;
    • id: integer
    • created, modified, updated: datetime


Adicionando colunas a uma tabela existente

Se o nome da migração na linha de comando estiver na forma "AddXXXToYYY" e for seguido por uma lista de nomes de colunas e tipos, então o arquivo de migração com o código para criar as colunas será gerado:


bin/cake bake migration AddPriceToProducts price:decimal

A linha de comando acima irá gerar um arquivo com o seguinte conteúdo:


<?php
use Migrations\AbstractMigration;

class AddPriceToProducts extends AbstractMigration
{
    public function change()
    {
        $table = $this->table('products');
        $table->addColumn('price', 'decimal')
              ->update();
    }
}


Especificando o tamanho do campo

Se você precisar especificar o tamanho do campo, você pode fazer isto entre colchetes logo após o tipo do campo, ex.:

bin/cake bake migration AddFullDescriptionToProducts full_description:string[60]

Executar o comando acima irá gerar:

<?php
use Migrations\AbstractMigration;

class AddFullDescriptionToProducts extends AbstractMigration
{
    public function change()
    {
        $table = $this->table('products');
        $table->addColumn('full_description', 'string', [
            'default' => null,
            'limit' => 60,
            'null' => false,
        ])
        ->update();
    }
}

Se o tamanho não for especificado, os seguintes padrões serão utilizados:
    • string: 255
    • integer: 11
    • biginteger: 20

Removendo uma coluna de uma tabela

Da mesma forma, você pode gerar uma migração para remover uma coluna utilizando a linha de comando, se o nome da migração estiver na forma "RemoveXXXFromYYY":

bin/cake bake migration RemovePriceFromProducts price

Cria o arquivo:
<?php
use Migrations\AbstractMigration;

class RemovePriceFromProducts extends AbstractMigration
{
    public function change()
    {
        $table = $this->table('products');
        $table->removeColumn('price');
    }
}

Gerando migrações a partir de uma base de dados existente

Se você está trabalhando com um banco de dados pré-existente e quer começar a usar migrações, ou para versionar o schema inicial da base de dados da sua aplicação, você pode executar o comando migration_snapshot:

bin/cake bake migration_snapshot Financas

Ele gerará um arquivo de migrations com todas as tabelas do banco, mas somente as estruturas, sem os registros:

YYYYMMDDHHMMSS_Financas.php


Migrações também podem ser executadas para plugins. Simplesmente utilize a opção
``--plugin`` ou ``-p``

bin/cake migrations migrate -p MyAwesomePlugin

Lista das migrações

bin/cake migrations status

Comentários (0)

    Attach images by dragging & dropping or by selecting them.
    The maximum file size for uploads is MB. Only files are allowed.
     
    The maximum number of 3 allowed files to upload has been reached. If you want to upload more files you have to delete one of the existing uploaded files first.
    The maximum number of 3 allowed files to upload has been reached. If you want to upload more files you have to delete one of the existing uploaded files first.
    Postando como

    Comments fornecido por CComment

    Novo Testamento

    Mas Pedro o levantou, dizendo: Levanta-te, que eu também sou homem.
    (At, 10:26)

    Rotas no Mapa do Google

    © 2015 Ribamar FS. All Rights Reserved. Designed By JoomShaper