El día de hoy llegamos al final de nuestro tutorial de ‘Introducción a Laravel desde Cero’. Hasta ahora, ya sabemos lo fundamental de Laravel, y podemos sin lugar a dudas comenzar a crear proyectos básicos. Cada uno de ellos de hecho, nos llevarán de a poco a ir aprendiendo cada vez más sobre este increíble Framework.
Igualmente, como les hemos comentado, hay muchos aspectos de Laravel que debemos aprender aún, pero al contar con lo esencial, lo demás lo iremos aprendiendo a medida que lo necesitemos.En el tutorial anterior habíamos llegado a comentar como funcionaban las migraciones y para que nos servían los modelos, así como también ya habíamos realizado la migración de éstos, contando con todas las tablas allí definidas en nuestra base de datos.
Por lo que en el día de hoy, estaremos trabajando con la base de datos directamente, ingresando datos y realizando diferentes consultas.
Interactuando con la Base de datos en Laravel
El primer paso que daremos hoy, es el de ingresar datos a nuestra base de datos, ya que esto nos permitirá luego poder consultarlos, editarlos y eliminarlos. Así que sin más, veamos como podemos realizar estas tareas en nuestro Proyecto.
Lo primero que realizaremos será crear un nuevo controlador, para trabajar con este modelo en específico. Para ello, siguiendo el tutorial anterior, ejecutamos «php artisan make:controller –resource UserController«. En este caso, estaremos utilizando la opción –resource, para que Laravel nos defina los métodos dentro de este y evitarnos ese paso.
Ahora que contamos con nuestro controlador, es hora de definir las rutas. Debido a que estaremos utilizando los ejemplos más básicos para este modelo, vamos a crear una ruta del tipo resource. Con este tipo de ruta, podremos realizar las consultas básicas, en el controlador de una forma sencilla y nos evitamos tener que crear una por separado para cada una de ellas.
Por aquí puede encontrar más información sobre como utilizar las rutas en Laravel, ya que no siempre es necesario crear la ruta de esta forma, de hecho hay muchas más opciones.
Ejemplo de como nos quedaría la ruta.
Route::resource('user', 'UserController');
También, teniendo en cuenta que estaremos trabajando con el modelo User en nuestro controlador, debemos agregar la siguiente línea «use App\User;» justo antes de la definición de la clase.
Trabajando con el modelo User
Para poder insertar un usuario, lo primero que debemos hacer es crear un formulario. Ya que lo típico sería que nuestro usuario se registrara allí y luego fuese guardado en la base de datos. Obviamente esto lo podemos hacer sin la necesidad de que los datos vengan desde allí, pero por simplicidad y para entenderlo mejor, tomaremos la ruta larga.
[wp-svg-icons icon=»profile» wrap=»i»] Creando la vista para trabajar con el modelo
Lo primero que debemos hacer para ello, es indicarle a nuestro controlador, que vista debería mostrar. En este caso, sería la que se encuentra dentro de la carpeta «user» que hemos creado y la vista se llamará «create.blade.php«. La vista, no será más que un simple HTML, con el Método «POST» , la Acción «/user» y los campos que deseamos ingresar en nuestra base de datos.
Recordemos definirle el Atributo name a cada uno de ellos, con el valor igual al campo en la base de datos. Es decir, si nuestro campo se llama password en la base de datos, entonces el input nos quedaría de la siguiente forma.
<input type="password" name="password">
También recordemos agregar lo siguiente dentro de nuestro form. Para que Laravel nos permita enviar los datos, y no nos de error te token.
{{ csrf_field() }}
El método utilizado para retornar la vista, será el método create.
public function create() { return view('user.create'); }
Ahora que contamos con la vista creada, ya la podemos ver accediendo a la URL ‘/user/create‘ en nuestra aplicación. Por ahora no hemos ingresado datos, pero al menos el usuario podrá ver el formulario.
[wp-svg-icons icon=»user» wrap=»i»] Insertando datos en la base de datos
Ahora necesitamos que al momento de que el usuario se registre, los datos sean ingresados a nuestra base de datos, ya que hasta ahora si bien nuestro formulario esta creado, no esta funcionado.
Para poder realizar esto, vamos al método store dentro de nuestro controlador.
Y agregamos lo siguiente:
public function store(Request $request) { $user = User::create($request->all()); return "Usuario registrado correctamente. ID: " . $user->id; }
Notemos que lo que estamos haciendo aquí realmente, es utilizando el modelo User. Allí llamamos el método create de este y le indicamos que deseamos crear un nuevo usuarios, con todos los datos que vienen en nuestro request.
Podríamos también, indicarle por ejemplo, que deseamos solamente crear el usuario con el nombre.
public function store(Request $request) { $user = User::create(array('name' => $request->name) ); return "Usuario registrado correctamente. ID: " . $user->id; }
Cabe destacar que en tu base de datos, debes de permitir los demás campos en blanco. De lo contrario no te dejará.
Ahora si, si ingresamos los datos dentro de nuestro formulario y nos registramos, podremos ver que éste nos retornará el ID del usuario. Además, si vamos a la base de datos, veremos que el usuario efectivamente se encuentra registrado.
Con esto, ya hemos logrado que los datos de los formularios sean ingresados correctamente. Igualmente cabe destacar que esto no es nada seguro, simplemente estamos ejecutando pruebas. Hay que tener en cuenta que no estamos encriptando el password del usuario o verificando que los datos ingresados sean los que esperamos. Por aquí podemos ver Como validar los formularios con Laravel.
[wp-svg-icons icon=»remove-2″ wrap=»i»] Eliminando un usuario de la base de datos
Para poder eliminar un registro de la base de datos, simplemente debemos saber el ID de éste. En este caso, sabemos que el usuario que hemos ingresado es el número 1, ya que ha sido el primero.
Eliminemos el usuario 1, de la base de datos.
El método para eliminar nos quedaría de la siguiente forma:
public function destroy($id) { User::destroy($id); return "Usuario eliminado correctamente"; }
Para poder llamarlo, simplemente debemos crear un nuevo form.
En este form, debemos tenemos que tener en cuenta algunos puntos.
- La URL debe ser «/user/id_usuario«, es decir que debemos saber el Id del usuario al momento de eliminarlo.
- El método de form debe ser POST, pero debemos colocar un input oculto que debe quedar así. De esta forma Laravel sabe que estamos en realidad intentando eliminar un registro.
<input type="hidden" name="_method" value="DELETE" />
- Debemos de contar con el token, al igual que cuando insertamos datos, de lo contrario nos dará error de token.
Un ejemplo de como nos quedaría, sería el siguiente:
<form class="form-horizontal" role="form" method="POST" action="/user/1"> {{ csrf_field() }} <input type="hidden" name="_method" value="DELETE" /> <input class="btn btn-danger" type="submit" value="Eliminar Usuario" /> </form>
Con ello, ya al hacer un submit del form, nuestro usuario será eliminado correctamente.
Al igual que con el create, cabe destacar que esto es a modo de prueba, es decir, no estamos validando nada, hay que tener en cuenta usuario podría no existir o incluso podríamos estar enviando algo distinto a una id de usuario. Siempre es necesario verificar y validar los formularios, al igual que si el usuario tiene permiso para realizar dicha acción.
[wp-svg-icons icon=»numbered-list» wrap=»i»] Consultando usuarios en la Base de datos
Ahora que contamos con usuarios en nuestra base de datos, podemos hacer un listado de ellos. Para ver el listado de los usuarios, usualmente utilizaríamos el método index de nuestro controlador.
Allí debemos colocar los siguiente:
public function index() { $users = User::get(); return view('user.listUsers')->with('users', $users); }
Ahora nos quedaría mostrar en la vista, cada uno de nuestros usuarios.
Notemos que le estamos indicando a la vista que le estaremos enviando una variable llamada users, con los datos que tenemos en $users, los cuales hemos sacado de la base de datos al realizar la consulta get() en el modelo.
Ahora bien, podríamos allí, agregar alguna condición. Por ejemplo, solo traer los usuarios con nombre «Pedro«.
public function index() { $users = User::where('name', '=', 'Pedro')->get(); return view('user.listUsers')->with('users', $users); }
Es aquí donde podemos especificar que deseamos consultar de la base de datos y qué cosas deseamos enviar a nuestra vista, para luego sí, desde ella mostrarle al usuario el resultado.
Ahora bien, debido a que hay muchas formas de realizar consultas e infinidades de combinaciones por supuesto, no las podemos abarcar todas, pero sí te podemos recomendar pasarte por la Documentación de Laravel, la cual explica todo muy detalladamente.
Para poder mostrar el resultado en la vista, tener algo como lo siguiente:
<h3>Lista de Usuarios</h3> <table class="table table-hover"> <thead> <tr> <th>ID</th> <th>Nombre</th> </tr> </thead> <tbody> @foreach($users as $user) <tr> <td>{{$user->id}}</td> <td>{{$user->name}}</td> </tr> @endforeach </tbody> </table>
Básicamente, será un foreach de nuestros usuarios y de cada uno de ellos, mostramos lo que deseamos. En este caso, estamos mostrando su ID y su nombre por ejemplo.
La lista de usuarios nos quedaría así:
Conclusión
Como vemos, trabajar con modelos en Laravel es extremadamente sencillo. Si bien hay algunos detalles que hay que aprender y pueden ser un poco confusos, como pueden ser los inputs ocultos o bien el tema del token. La mayoría de las cosas en este Framework son bastante fáciles de entender.
Ahora que ya has aprendido lo básico, recuerda que no hay mejor forma para continuar conociendo más este Framework como practicar cada día realizando pruebas y proyectos. No te quedes solamente con lo que hemos visto aquí, hay mucho más para realizar en Laravel.
Gracias por leer nuestro mini-curso de Introducción a Laravel desde Cero para Principiantes.