Estoy intentando crear una página de informe que muestre informes desde una fecha específica hasta una fecha específica. Aquí está mi código actual:
$now = date('Y-m-d');
$reservations = Reservation::where('reservation_from', $now)->get();
Lo que esto hace en SQL simple es select * from table where reservation_from = $now
.
Tengo esta consulta aquí, pero no sé cómo convertirla en una consulta elocuente.
SELECT * FROM table WHERE reservation_from BETWEEN '$from' AND '$to
¿Cómo puedo convertir el código anterior en una consulta elocuente? Gracias de antemano.
reservation_from
. puede usar los valores de carbono basados en eso.Reservation::where('reservation_from', '>=', Carbon::createFromDate(1975, 5, 21);) ->where('reservation_from', '<=', Carbon::createFromDate(2015, 5, 21);)->get()
,;Respuestas:
El
whereBetween
método verifica que el valor de una columna esté entre dos valores.En algunos casos, es necesario agregar un rango de fechas de forma dinámica. Según el comentario de @Anovative , puede hacer esto:
Si desea agregar más condiciones, puede usar
orWhereBetween
. Si desea excluir un intervalo de fechas, puede usarwhereNotBetween
.Otras cláusulas útiles donde:
whereIn
,whereNotIn
,whereNull
,whereNotNull
,whereDate
,whereMonth
,whereDay
,whereYear
,whereTime
,whereColumn
,whereExists
,whereRaw
.Documentos de Laravel sobre las cláusulas Where.
fuente
$from
y$to
fueran fechas dinámicas que pertenecen al modelo? Al igual que en existe unaeffective_at
yexpires_at
campos y quiero consulta para ver si el elemento actual es dentro de ese rango. Intentéeach()
con un if que se usaCarbon::now()->between( ... )
, sin embargo, todavía devuelve todos los resultados.filter()
, eso funcionó.MyModel::all()->where('column', 'value')->filter(function ($item) { if (Carbon::now->between($item->effective_at, $item->expires_at)) { return $item; } })->first();
Otra opción si su campo es en
datetime
lugar dedate
( aunque funciona para ambos casos ):fuente
Lo siguiente debería funcionar:
fuente
Si desea verificar si la fecha actual existe entre dos fechas en db: => aquí la consulta obtendrá la lista de aplicaciones si la solicitud del empleado desde y hasta la fecha existe en la fecha de hoy.
fuente
Prueba esto:
Dado que está obteniendo en función de un valor de una sola columna, puede simplificar su consulta de la misma manera:
Recuperar basado en condición: laravel docs
Espero que esto haya ayudado.
fuente
Y he creado el alcance del modelo.
Más sobre osciloscopios:
https://laravel.com/docs/5.8/eloquent#query-scopes
https://medium.com/@janaksan_/using-scope-with-laravel-7c80dd6a2c3d
Código:
Y en el controlador, agregue la biblioteca de carbono al principio
O
Para obtener el registro de los últimos 10 días a partir de ahora
Para obtener el registro de los últimos 30 días a partir de ahora
fuente
Si necesita saber cuándo un campo de fecha y hora debería ser así.
fuente
Sé que esta podría ser una pregunta antigua, pero me encontré en una situación en la que tuve que implementar esta función en una aplicación Laravel 5.7. A continuación se muestra lo que funcionó de mí.
También necesitará utilizar Carbon
fuente