PauloRB.dev

Desenvolvedor de Software

Definindo o Ano Atual como Valor Padrão em Migrations do Laravel | PauloRB.dev Definindo o Ano Atual como Valor Padrão em Migrations do Laravel – PauloRB.dev
Definindo o Ano Atual como Valor Padrão em Migrations do Laravel

Definindo o Ano Atual como Valor Padrão em Migrations do Laravel

Ao trabalhar com migrations no Laravel, uma tarefa comum é definir valores padrão para colunas em tabelas de banco de dados. Uma situação específica é definir o ano atual como valor padrão para uma coluna. Este tutorial mostrará como fazer isso de maneira uniforme, independente do banco de dados escolhido, com exemplos específicos para MySQL e PostgreSQL.

Passo 1: Criar a Migration

Primeiro, crie a migration para adicionar a coluna ano à sua tabela. Use o comando Artisan para gerar a migration:

php artisan make:migration add_ano_to_exemplos_table --table=exemplos

No arquivo de migration gerado, adicione a coluna ano com o valor padrão apropriado, dependendo do banco de dados:

Exemplo para MYSQL:

public function up()
{
    Schema::table('exemplos', function (Blueprint $table) {
        $table->integer('ano')->nullable()->default(DB::raw('YEAR(CURDATE())'));
    });
}

public function down()
{
    Schema::table('exemplos', function (Blueprint $table) {
        $table->dropColumn('ano');
    });
}

Exemplo para POSTGRESQL:

public function up()
{
    Schema::table('exemplos', function (Blueprint $table) {
        $table->integer('ano')->nullable()->default(DB::raw('EXTRACT(YEAR FROM CURRENT_DATE)'));
    });
}

public function down()
{
    Schema::table('exemplos', function (Blueprint $table) {
        $table->dropColumn('ano');
    });
}

Exemplo de como definir diretamento no modelo:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Exemplo extends Model
{
    protected static function boot()
    {
        parent::boot();

        static::creating(function ($model) {
            if (is_null($model->ano)) {
                $model->ano = date('Y');
            }
        });
    }
}

Depois de realizado os passos acima execute as migrations

Para garantir que tudo está funcionando conforme o esperado, você pode testar criando um novo registro na tabela exemplos. No Tinker ou em um controlador, crie um novo registro sem especificar o valor da coluna ano:

use App\Models\Exemplo;

$newRecord = Exemplo::create([
    'status' => 'AGUARDANDO'
]);

echo $newRecord->ano; // Deve exibir o ano atual

Mais Posts

Entendendo as Diferenças Entre Programação Orientada a Objetos e Funcional: Java vs. Elixir

Entendendo as Diferenças Entre Programação Orientada a Objetos e Funcional: Java vs. Elixir

A escolha entre programação orientada a objetos (OOP) e programação funcional (FP) é mais do que uma preferência de estilo;... Leia mais

Estruturas de Dados em Go: Guia Simples com Exemplos Práticos

Estruturas de Dados em Go: Guia Simples com Exemplos Práticos

Go (ou Golang) é uma linguagem de programação eficiente e fácil de usar, conhecida por sua simplicidade, sendo ideal para... Leia mais

Alternar entre múltiplas versões no PHP

Alternar entre múltiplas versões no PHP

Então problemas do dia-a-dia se por alguma motivo qualquer você prefere utilizar ambientes de desenvolvimento locais ao invés de containers... Leia mais

Como Resolver Problemas de Permissões ao Usar Docker no WSL2

Como Resolver Problemas de Permissões ao Usar Docker no WSL2

O Docker é uma ferramenta poderosa para gerenciar contêineres, e sua integração com o WSL2 no Windows oferece um ambiente... Leia mais