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

173
Vistas
Laravel intersect no obtendrá entrada

Tengo una intersección en mi método de actualización:

 $inputs = $request->intersect('message','name','email','is_read');

Si envío una solicitud de actualización donde is_read=0, la intersección devuelve una matriz vacía. Funciona bien con cualquier otra cosa (falso, 1, etc.)

¿Algun consejo?

¡Gracias!

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

ALERTA Intente pasar a otra implementación y deje de usar el método intersect() , se eliminará de las futuras versiones de Laravel: Enlace

SI quiere decir que falta la clave is_read en la matriz final (y no que toda la matriz está vacía, vea mi comentario), esto se debe a la implementación del método intersect() .

El método intersect simplemente envuelve el método only() de la clase Illuminate\Http\Request y realiza un array_filter sobre el resultado.

Esta es la implementación:

 /** * Intersect an array of items with the input data. * * @param array|mixed $keys * @return array */ public function intersect($keys) { return array_filter($this->only(is_array($keys) ? $keys : func_get_args())); }

En su caso, podemos descomponer el código así:

paso 1

 $results = $request->only('message','name','email','is_read');

En este punto, $results es

 Array ( [message] => message [name] => name [email] => email [is_read] => 0 )

Sin embargo, en el paso 2

paso 2

 $filteredResults = array_filter($results);

El resultado se convierte

 Array ( [message] => message [name] => name [email] => email )

Y esto se debe a cómo funciona array_filter . Espera una matriz como primer parámetro, luego una devolución de llamada opcional (utilizada para filtrar la matriz) y una bandera.

De referencia php

¿Qué sucede cuando no se proporciona devolución de llamada (como en este caso?)

Si no se proporciona una devolución de llamada, se eliminarán todas las entradas de la matriz iguales a FALSO (ver conversión a booleano ).

Si observa el enlace que se convierte en booleano , verá que se supone que 0 (cero) es FALSO y, por ese motivo, se elimina de la matriz.

about 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