es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Carbono Saltar cierto mes.

¿Existe una forma de omitir un mes específico? Solo necesito mostrar enero, febrero, septiembre, octubre, noviembre y diciembre.

Este es mi código:

$emptyMonth = [‘count’ => 0, ‘month’ => 0];

for ($i = 1; $i <= 12; $i++) {
$emptyMonth[‘month’] = $i;
$monthlyArray[$i – 1] = $emptyMonth;
}

$data = DB::table(‘doc’)
->select(DB::raw(‘count(*) as count,MONTH(created_at) as month’))
->where(‘status’, ‘done’)
->where(‘created_at’, ‘>=’, Carbon::parse(‘first day of january’))
->where(‘created_at’, ‘<=’, Carbon::parse(‘last day of december’))
->whereyear(‘created_at’, Carbon::now())
->groupBy(‘month’)
->orderBy(‘month’)
->get()
->toarray();

foreach ($data as $key => $array) {
$monthlyArray[$array->month – 1] = $array;
}

$result = collect($monthlyArray)->pluck(‘count’);

¿Existe una forma de omitir o no mostrar algunos meses específicos?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes modificar el bucle for para asignar valores solo al arreglo de los meses que deseas mostrar. En este caso, puedes agregar una declaración condicional dentro del bucle para omitir los meses que no deseas mostrar:

    $emptyMonth = ['count' => 0, 'month' => 0];
    
    for ($i = 1; $i <= 12; $i++) {
        if ($i == 3 || $i == 4 || $i == 5 || $i == 6 || $i == 7 || $i == 8) {
            continue; // omitir estos meses
        }
        $emptyMonth['month'] = $i;
        $monthlyArray[$i - 1] = $emptyMonth;
    }
    
    $data = DB::table('doc')
        ->select(DB::raw('count(*) as count,MONTH(created_at) as month'))
        ->where('status', 'done')
        ->where('created_at', '>=', Carbon::parse('first day of january'))
        ->where('created_at', '<=', Carbon::parse('last day of december'))
        ->whereyear('created_at', Carbon::now())
        ->groupBy('month')
        ->orderBy('month')
        ->get()
        ->toArray();
    
    foreach ($data as $key => $array) {
        $monthlyArray[$array->month - 1] = $array;
    }
    
    $result = collect($monthlyArray)->pluck('count');
    

    En este ejemplo, la declaración continue omite los meses de marzo a agosto, y el bucle solo asigna valores al arreglo de los meses que deseas mostrar.

Comments are closed.