ORM

Ocultar columnas en consultas de Eloquent

ocultar campos de consultas eloquent

Cuando trabajamos con eloquent, podemos obtener columnas específicas de los modelos utilizando select, que es simple de utilizar cuando se seleccionan pocos campos.

public function index(){
    $products = Product::select(['id', 'price'])->get();
    return response()->json($products);
}

Cuando los campos a seleccionar son todos menos unos pocos, sería más fácil decirle a Eloquent que oculte los campos que no son necesarios. Podemos ocultar columnas, configuradas como visibles, de nuestros modelos utilizando el método makeHidden.

public function index(){
    $products = Product::all()->makeHidden(['owner', 'new_arrival', 'created_at', 'updated_at']);
    return response()->json($products);
}

Un punto a resaltar es que cuando se hace un dd() de los datos obtenidos, makeHidden muestra todos los campos, como una consulta normal, pero cuando estos datos son desplegados como json o en blade, los campos no se mostrarán.

Por el contrario, al hacer un dd() con una consulta select únicamente se muestran los datos que se especifican en su argumento.

Tambien existe el método makeVisible, que permite obtener datos de campos que son configurados como ocultos.

public function index(){
    $users = User::all()->makeVisible(['password']);
    return response()->json($users);
}

Fuentes bibliográficas:

1.
Eloquent: Collections - Laravel - The PHP Framework For Web Artisans [Internet]. [cited 2021 Jan 27]. Available from: https://laravel.com/docs/8.x/eloquent-collections#method-makeHidden
0396
Roberth

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *