Laravel Carbon resta días de la fecha actual

2 minutos de lectura

avatar de usuario
cosmoloco

Estoy tratando de extraer objetos del modelo “Usuarios” cuyo created_at fecha ha sido más de 30 días a partir de hoy.

Carbon::now() ==> Quiero como ==> Carbon::now() – 30 días

$users = Users::where('status_id', 'active')
               ->where( 'created_at', '<', Carbon::now())
               ->get();

¿Cómo se puede lograr esto?

Usar subDays() método:

$users = Users::where('status_id', 'active')
           ->where( 'created_at', '>', Carbon::now()->subDays(30))
           ->get();

  • ¿Está seguro de cambiar ‘<' a '>‘ para obtener usuarios creados hace más de 30 días?

    – Chris Forence

    13 de diciembre de 2016 a las 13:26


  • mi condición es que la fecha actual es más de 30 días a partir de la fecha actual. Supongo que esta lógica hace la tarea por mí.

    – cosmoloc

    13 de diciembre de 2016 a las 13:28

  • Me alegro de que haya ayudado. ) @ChrisForrence sí, si usaría <devolvería todos los usuarios creados antes now minus 30 days punto.

    – Alexei Mezenin

    13 de diciembre de 2016 a las 13:29

  • @AlexeyMezenin Eso es lo que busca el autor de la pregunta original; usando hoy como ejemplo (13 de diciembre), “más de 30 días a partir de hoy” serían usuarios creados antes del 13 de noviembre.

    – Chris Forence

    13 de diciembre de 2016 a las 13:32

  • supongo que el suyo more medio later aquí. También Carbon::now() ==> I want as ==> Carbon::now() - 30days explica bastante lo que quiere OP.

    – Alexei Mezenin

    13 de diciembre de 2016 a las 13:37

Siempre puedes usar strtotime a menos el número de días a partir de la fecha actual:

$users = Users::where('status_id', 'active')
           ->where( 'created_at', '>', date('Y-m-d', strtotime("-30 days"))
           ->get();

  • podría hacerlo date('Y-m-d 00:00:00', strtotime("-30 days") ser mas ordenado

    – tristanbailey

    29 de enero de 2021 a las 9:05

Desde Laravel 5.6 puedes usar dondeFecha:

$users = Users::where('status_id', 'active')
       ->whereDate( 'created_at', '>', now()->subDays(30))
       ->get();

También tienes whereMonth / whereDay / whereYear / whereTime

  • Me gusta este porque está usando el ayudante now().

    – Luciano Fantuzzi

    5 de febrero a las 15:01

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad