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

133
Vistas
la forma correcta de usar makeHidden en laravel

Tengo un problema con la paginación.

todo funciona bien sin errores, pero el problema es que cuando uso makeHidden con mi código, cambia la estructura de mi resultado de paginación json

este es mi codigo

 $result = Job::where('user_id','=',Auth::id())->paginate(5); $result= $result->makeHidden(['hasMessage']);

sin la segunda línea el resultado es

 { total: 1 , per_page: 5, current_page: 1, last_page: 1, next_page_url: null, prev_page_url: null, from: 1, to: 1, data: [ { id: 4, sid:125, hasMessage: true } ] }

pero cuando uso

 $result= $result->makeHidden(['hasMessage']);

Obtuve

 [ { id: 4, sid:125, } ]

alguna idea por favor ? ? ¿Es un error o hay algo mal? ?

hasMessage es un campo adjunto, no una columna real

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

0

finalmente lo hice con un pequeño truco de programación

 $paginator = Job::where('user_id','=',Auth::id())->paginate(5); $data = $paginator->makeHidden(['hasMessage']); $paginator->data = $data; return $paginator;

gracias

about 4 years ago · Santiago Trujillo Denunciar

0

si desea conservar los datos de paginación, use los getCollection() y setCollection() :

 $paginator = Job::where('user_id','=',Auth::id())->paginate(5); $paginator->setCollection($paginator->getCollection()->makeHidden(['hasMessage'])); return $paginator;
about 4 years ago · Santiago Trujillo Denunciar

0

Te falta toArray() en tu código. Debería ser como:

 $result= $result->makeHidden(['hasMessage'])->toArray();

Echa un vistazo a los documentos:

https://laravel.com/docs/5.4/eloquent-serialization#hiding-attributes-from-json

Editar:

También traté de paginate y devolvió la matriz modificada y es el resultado esperado para makeHidden() .

También podría echar un vistazo a la función:

 public function makeHidden($attributes) { $attributes = (array) $attributes; $this->visible = array_diff($this->visible, $attributes); $this->hidden = array_unique(array_merge($this->hidden, $attributes)); return $this; }

Como está haciendo array_merge , distorsiona su respuesta json.

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