Estou tentando criar uma página de relatório que mostra relatórios de uma data específica para uma data específica. Este é meu código atual:
$now = date('Y-m-d');
$reservations = Reservation::where('reservation_from', $now)->get();
O que isso faz em SQL simples é select * from table where reservation_from = $now
.
Tenho esta consulta aqui, mas não sei como convertê-la em consulta eloquente.
SELECT * FROM table WHERE reservation_from BETWEEN '$from' AND '$to
Como posso converter o código acima em uma consulta eloquente? Agradeço antecipadamente.
reservation_from
. você pode usar os valores de carbono com base nisso.Reservation::where('reservation_from', '>=', Carbon::createFromDate(1975, 5, 21);) ->where('reservation_from', '<=', Carbon::createFromDate(2015, 5, 21);)->get()
,;Respostas:
O
whereBetween
método verifica se o valor de uma coluna está entre dois valores.Em alguns casos, você precisa adicionar o intervalo de datas dinamicamente. Com base no comentário de @Anovative , você pode fazer o seguinte:
Se quiser adicionar mais condição, você pode usar
orWhereBetween
. Se quiser excluir um intervalo de datas, você pode usarwhereNotBetween
.Outras cláusulas úteis em que:
whereIn
,whereNotIn
,whereNull
,whereNotNull
,whereDate
,whereMonth
,whereDay
,whereYear
,whereTime
,whereColumn
,whereExists
,whereRaw
.Laravel docs sobre Where Clauses.
fonte
$from
e$to
fossem datas dinâmicas pertencentes ao modelo? Como em há umeffective_at
eexpires_at
campos e eu quero consultar para ver se o item atual está dentro desse intervalo. Tenteieach()
com um if that useCarbon::now()->between( ... )
, porém ainda retorna todos os resultados.filter()
, isso resolveu o problema.MyModel::all()->where('column', 'value')->filter(function ($item) { if (Carbon::now->between($item->effective_at, $item->expires_at)) { return $item; } })->first();
Outra opção se o seu campo for em
datetime
vez dedate
( embora funcione para os dois casos ):fonte
O seguinte deve funcionar:
fonte
Se você deseja verificar se a data atual existe entre duas datas no banco de dados: => aqui a consulta obterá a lista de aplicativos se o aplicativo de e até a data de hoje existe na data de hoje.
fonte
Experimente isto:
Como você busca com base em um único valor de coluna, pode simplificar sua consulta da mesma forma:
Recuperar com base na condição: laravel docs
Espero que tenha ajudado.
fonte
E eu criei o escopo do modelo
Mais sobre escopos:
https://laravel.com/docs/5.8/eloquent#query-scopes
https://medium.com/@janaksan_/using-scope-with-laravel-7c80dd6a2c3d
Código:
E no controlador, adicione a Biblioteca de Carbono ao topo
OU
Para obter o registro dos últimos 10 dias a partir de agora
Para obter os últimos 30 dias registro dos partir de agora
fonte
Se você precisar saber quando um campo de data e hora deve ser assim.
fonte
Eu sei que isso pode ser uma questão antiga, mas acabei de me ver em uma situação em que tive que implementar esse recurso em um aplicativo Laravel 5.7. Abaixo está o que funcionou comigo.
Você também precisará usar Carbon
fonte