PauloRB.dev

Desenvolvedor de Software

Como Usar Between Entre Duas Colunas de Data no Laravel | PauloRB.dev Como Usar Between Entre Duas Colunas de Data no Laravel – PauloRB.dev
Como Usar Between Entre Duas Colunas de Data no Laravel

Como Usar Between Entre Duas Colunas de Data no Laravel

Trabalhar com intervalos de datas é uma necessidade comum em aplicações web, especialmente em sistemas que lidam com eventos, agendamentos ou relatórios. Neste artigo, vamos explorar como usar o operador BETWEEN entre duas colunas de data no Laravel, tanto com o Eloquent quanto com o Query Builder.

O Problema

Imagine que você possui uma tabela eventos com as colunas data_inicio e data_fim. Você quer consultar todos os eventos que acontecem em uma data específica, como 2024-11-10. Em SQL, a consulta seria algo como:

SELECT *
FROM eventos
WHERE '2024-11-10' BETWEEN data_inicio AND data_fim;

No Laravel, podemos traduzir essa lógica de forma eficiente usando os recursos do framework.

Usando o Eloquent

O Eloquent é a forma mais elegante e intuitiva de trabalhar com o banco de dados no Laravel. Para aplicar o BETWEEN, usamos a seguinte abordagem:

Exemplo:

use App\Models\Evento;

$dataConsulta = ‘2024-11-10’;

$eventos = Evento::whereBetween($dataConsulta, [‘data_inicio’, ‘data_fim’])->get();

Explicação:

  • whereBetween() é usado para especificar o intervalo de comparação.
  • Passamos a data a ser consultada como primeiro parâmetro.
  • As colunas data_inicio e data_fim delimitam o intervalo.

No entanto, o whereBetween() não funciona diretamente para comparar colunas no Eloquent. Nesse caso, precisamos usar DB::raw.


Usando o Query Builder

O Query Builder é ideal para casos que exigem maior flexibilidade, como comparações entre colunas. Aqui está como podemos traduzir o BETWEEN:

Exemplo:

use Illuminate\Support\Facades\DB;

$dataConsulta = '2024-11-10';

$eventos = DB::table('eventos')
->whereRaw('? BETWEEN data_inicio AND data_fim', [$dataConsulta])
->get();

Explicação:

  • whereRaw permite inserir expressões SQL personalizadas.
  • O uso de ? e do array [$dataConsulta] protege contra SQL Injection.

Exemplos Adicionais

Consulta para verificar se data_fim está entre data_inicio e outra coluna, como data_limite:

$eventos = DB::table('eventos')
->whereRaw('data_fim BETWEEN data_inicio AND data_limite')
->get();

Usando Operadores para maior controle

Se preferir, você pode usar operadores lógicos em vez de BETWEEN:

$dataConsulta = '2024-11-10';

$eventos = Evento::where('data_inicio', '<=', $dataConsulta)
    ->where('data_fim', '>=', $dataConsulta)
    ->get();

Consultar dados usando BETWEEN entre colunas é uma tarefa simples no Laravel, tanto com o Eloquent quanto com o Query Builder. O uso de whereRaw oferece a flexibilidade necessária para comparações entre colunas, enquanto operadores como >= e <= tornam sua consulta mais legível e direta.

Escolha a abordagem que melhor se adapta ao seu cenário e comece a explorar os intervalos de datas no Laravel de forma eficiente!

 

Mais Posts

Extensões Visual Studio Code para o dia a dia

Extensões Visual Studio Code para o dia a dia

Segue uma lista das extensões que mais utilizo em meu dia a dia como desenvolvedor quando uso o editor VisualStudio... Leia mais

Como atualizar multiplos registros com o método whereIn no Laravel 9 ?

Como atualizar multiplos registros com o método whereIn no Laravel 9 ?

O Laravel 9 é um framework PHP moderno e poderoso que oferece muitas ferramentas úteis para desenvolvedores web. Uma das... Leia mais

Usando Strategy e Pipeline juntos no Laravel para organizar regras complexas

Usando Strategy e Pipeline juntos no Laravel para organizar regras complexas

À medida que um sistema cresce, a lógica de negócio costuma se tornar mais complexa. Um dia você está apenas... Leia mais

Como Instalar e Usar o MailHog com Laravel para Testes de Email

Como Instalar e Usar o MailHog com Laravel para Testes de Email

No desenvolvimento de aplicações web, especialmente no Laravel, enviar emails é uma tarefa comum. Porém, testar o envio de emails... Leia mais