CodeIgniter 4: migrações e seeders para o banco de dados

Crie e execute migrações e seeders no CodeIgniter 4 com comandos Spark corretos, exemplos PHP válidos e cuidados com os dados.

CodeIgniter 4: migrações e seeders para o banco de dados

Crie e execute migrações e seeders no CodeIgniter 4 com comandos Spark corretos, exemplos PHP válidos e cuidados com os dados.

Esquema versionado

Migrações descrevem mudanças incrementais no esquema. Os arquivos em app/Database/Migrations têm prefixo de data e classe única: up() aplica e down() desfaz. A tabela migrations registra o que foi executado. Confira a conexão e faça cópia dos dados existentes antes de alterar o banco.

Crie uma migração

Execute php spark make:migration CreateNewsTable na pasta do projeto. O comando gera um esqueleto; complete up() e down() como no exemplo. Forge cria news com chave primária e três campos. down() remove a tabela e seus dados.

<?php
// app/Database/Migrations/YYYY-MM-DD-HHMMSS_CreateNewsTable.php
namespace App\Database\Migrations;

use CodeIgniter\Database\Migration;

class CreateNewsTable extends Migration
{
    public function up()
    {
        $this->forge->addField([
            'id' => [
                'type' => 'INT', 'constraint' => 11,
                'unsigned' => true, 'auto_increment' => true,
            ],
            'title' => ['type' => 'VARCHAR', 'constraint' => 255],
            'slug' => ['type' => 'VARCHAR', 'constraint' => 255],
            'text' => ['type' => 'TEXT'],
        ]);
        $this->forge->addKey('id', true);
        $this->forge->createTable('news');
    }

    public function down()
    {
        $this->forge->dropTable('news');
    }
}

Execute e confira

php spark migrate aplica migrações pendentes no namespace App; php spark migrate:status mostra a situação. Use php spark migrate --all se precisar dos namespaces configurados. Confira grupo de banco e namespace. Não conte com um comando migrate:latest inexistente como etapa necessária.

Rollback e refresh

php spark migrate:rollback volta ao estado inicial; -b escolhe um lote. php spark migrate:refresh desfaz e depois executa todas as migrações. Ambos podem destruir dados: use em testes ou depois de avaliar efeitos, cópia e plano de recuperação.

Seeder de exemplo

Um seeder estende CodeIgniter\Database\Seeder e implementa run(). Gere o esqueleto com php spark make:seeder NewsSeeder e inclua registros fictícios como no exemplo. Execute php spark db:seed NewsSeeder. Não suponha que db:seed sem nome execute todos os arquivos. Rodar o exemplo novamente cria duplicatas sem regra de unicidade ou verificação.

<?php
// app/Database/Seeds/NewsSeeder.php
namespace App\Database\Seeds;

use CodeIgniter\Database\Seeder;

class NewsSeeder extends Seeder
{
    public function run()
    {
        $this->db->table('news')->insertBatch([
            ['title' => 'Sample one', 'slug' => 'sample-one', 'text' => 'Demo text'],
            ['title' => 'Sample two', 'slug' => 'sample-two', 'text' => 'Demo text'],
        ]);
    }
}

Trabalho em equipe

Versione migrações e seeders. Crie outra migração em vez de editar uma já aplicada em outros ambientes. Dados de referência exigem estratégia de atualização e repetibilidade. Não inclua dados pessoais em exemplos. Teste aplicação e reversão em staging antes da produção.

Fontes

Documentação CodeIgniter: https://codeigniter4.github.io/CodeIgniter4/dbmgmt/migration.html ; seeders: https://codeigniter4.github.io/CodeIgniter4/dbmgmt/seeds.html .

Partilhar

Qual é a sua reação?

Gosto Gosto 0
Não gosto Não gosto 0
Adoro Adoro 0
Divertido Divertido 0
Irritado Irritado 0
Triste Triste 0
Uau Uau 0