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... Leia mais
Desenvolvedor de Software
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.
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.
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();
whereBetween()
é usado para especificar o intervalo de comparação.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
.
O Query Builder é ideal para casos que exigem maior flexibilidade, como comparações entre colunas. Aqui está como podemos traduzir o BETWEEN
:
use Illuminate\Support\Facades\DB;
$dataConsulta = '2024-11-10';
$eventos = DB::table('eventos')
->whereRaw('? BETWEEN data_inicio AND data_fim', [$dataConsulta])
->get();
whereRaw
permite inserir expressões SQL personalizadas.?
e do array [$dataConsulta]
protege contra SQL Injection.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();
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!
Ao trabalhar com migrations no Laravel, uma tarefa comum é definir valores padrão para colunas em tabelas de banco de... Leia mais
Quando trabalhamos com Eloquent no Laravel, frequentemente precisamos realizar consultas baseadas em relacionamentos entre modelos. Para isso, o Laravel oferece... Leia mais
Nesta semana o Postgres vem me desafiando, e meu pc também, porque por algum motivo o PGADMIN está demorando uma... Leia mais
A robótica e a eletrônica são áreas fascinantes que combinam criatividade e lógica para construir soluções incríveis. Hoje, vamos explorar... Leia mais