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

Função para fazer a tecla ENTER funcionar como a tecla TAB em formulários web.

Função para fazer a tecla ENTER funcionar como a tecla TAB em formulários web.

Segue função em Jquery que utilizei muito em projetos para permitir o comportamento da tecla TAB(pular campos do formulários) utilizando... Leia mais

Script para automatizar as instalações de extensões do php em distribuições LINUX

Script para automatizar as instalações de extensões do php em distribuições LINUX

Publiquei neste artigo https://paulorb.dev/alternar-entre-multiplas-versoes-no-php/ formas de como instalar diversas versões do PHP em distros Linux mas surgiu um problema que... Leia mais

Como Unir Múltiplos Arquivos PDF em um Único Documento Usando Python

Como Unir Múltiplos Arquivos PDF em um Único Documento Usando Python

No dia a dia, muitas vezes nos deparamos com a necessidade de unir vários arquivos PDF em um único documento.... Leia mais

Entendendo a Função list() no PHP

Entendendo a Função list() no PHP

A função list() do PHP é uma forma prática de atribuir múltiplos valores de um array a variáveis individuais. Neste... Leia mais