Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

403
Vistas
Laravel obtiene el recuento de filas de columnas con condición

Supongamos que si tengo una mesa de

 ID Col1 Col2 Col3 Col4 Col5 1 Hello "" Hi "" "" 2 two "" Hi here ""

Quiero obtener el recuento de Col(X) sin incluir la columna vacía. Entonces para el registro 1 debo tener un conteo de 2 y para el registro 2 tengo 3

¿Cómo puedo hacerlo en MySQL o en Eloquent o Query Builder de Laravel? Gracias por adelantado.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Lo que quieres es sumar los campos no vacíos. En MySQL se parece a:

 SELECT *, SUM((Col1!='') + (Col2!='') + (Col3!='') + (Col4!='') + (Col5!='')) as NotEmptyFields FROM table GROUP BY ID;

En Laravel se parece a:

 Model::select(DB::raw('*, SUM((Col1!="") + (Col2!="") + (Col3!="") + (Col4!="") + (Col5!="")) as NotEmptyFields')) ->groupBy('ID') ->get();
over 4 years ago · Santiago Trujillo Denunciar

0

Pruebe esta solución:

 $data = DB::table('MyTable')->get();

Obtenga todos los datos de la tabla usando una consulta como esta en laravel. Devuelve una matriz de objetos. Así que itere su matriz usando para cada ciclo y verifique las columnas o esté vacía o no.

Si alguna columna está vacía, no haga nada.

Pero si alguna columna tiene un valor de conteo + 1, agregue en su matriz de resultados.

 $result = []; foreach($data as $object) { $result[$object->id] = 0; foreach($object as $key => $value) { if(!empty($value)) { if($key != 'id') { $result[$object->id] = $result[$object->id] + 1; } } } } var_dump($result);
over 4 years ago · Santiago Trujillo Denunciar

0

La respuesta de Muhammad podría volverse muy lenta en grandes conjuntos de datos.

Prueba así.

 DB::table('model') ->select(DB::raw(' (is_null(Col1) OR Col1 = '') + (is_null(Col2) OR Col2 = '') + (is_null(Col3) OR Col3 = '') + (is_null(Col4) OR Col4 = '') + (is_null(Col5) OR Col5 = '') as NumberofNulls' ))

Esto ahora debería contar columnas con NULL o cadena vacía en ellas

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda