migraciones, controlador, Modelo, y seeders para bases de datos con Laravel


migraciones, controlador, Modelo, y seeders para bases de datos con Laravel


IntroducciónEn este  blog le enseñaremos acerca de lo que son las rutas, los modelos, controladores, migraciones y seeders. 

¿Como crear cada uno de estos mediante comandos en nuestra consola de Windows y explicar su funcionamiento mediante la inserción 
de información aleatoria   mediante algunas funciones que veremos en este mismo tutorial.?

Objetivos   

Ø  Escribiremos comandos en Laravel para definir un modelo, una migración, y un seeder.   

Ø  Configurar el archivo .env para conectarse a una DB de MySql.   

 Ø  Definir una tabla a través de una migración. 

 Ø  Escribir comando de composer para ejecutar migraciones

 Ø  Definir un seeder   

Ø  Escribir comando de composer para definir un controlador.  

 Ø  Definir rutas para solicitar datos al modelo


Conocimientos previos
  •  Descarga de proyecto Laravel
  •   Uso de la consola de Windows
  •   Conocimientos básicos en programación
  •   Definición de funciones php
  •   Definir ruta y rutas con parámetros en Laravel
  •  Uso de bases de datos en MySql
  •   Lenguaje SQL Descripción del módulo a realizar
Se definirá una tabla a través de las migraciones de Laravel, para eso haremos  comandos de composer para la definición del modelo
 con migración, lse escribirá la estructura de la tabla “empleados” (id, identidad, nombres, apellidos, sexo, fechanac, dirección), después
 se escribirá un archivo seeder para generar registros a la tabla a través del componente faker(genera información aleatoria) 
Una vez definido el modelo, la migración y el seeder se procederá a escribir un controlador al cual a través de rutas definidas se harán solicitudes de 
datos al modelo (ORM), las peticiones que se escribirán son para obtener una lista de empleados por sexo, una lista de empleados por dirección.
Desarrollo de los contenidos
1.  Abrir el proyecto de Laravel en el editor de su preferencia

2. Activar el servidor apache y MySql a través de la aplicación XAMPP








 3. Abrir la consola de Windows y mediante comandos D.O.S acceder a la carpeta del proyecto de Laravel y escribir el comando 

artisan para crear el modelo y     la   migración   php artisan make:model Empleado –m


 Ya con esto hemos creado el modelo y la migración mediante los comandos que hemos realizado en la imagen anterior
Migración:
Como se puede ver en la imagen, en el directorio database, vamos al subdirectorio migration y ahí nos aparece la migración “empleados”
 que hemos creado anteriormente y hemos llamado “Empleado”. Si puedes observar Laravel le da un nombre en plural y convierte 
las letras mayúsculas a minúsculas, esto porque se lleva un mejor manejo de nombres para evitar confusiones o errores posibles.
Modelo:
Vamos al directorio app y ahí encontramos nuestro modelo:


4. Luego en la misma carpeta database/migration encontrara el archivo empleados con la fecha y la hora de creación, 
ábralo y en él defina los campos para la tabla.
Campo
Tipo de dato
identidad
Varchar(15)
nombres
Varchar(50)
apellidos
Varchar(50)
fechanac
Date
sexo
Varchar(35)
Dirección
Varchar(250)


5. Una vez definidos todos los campos de la tabla, modificamos el archivo .env: en él cambiar los siguientes parámetros:
DB_DATABASE=empresa
DB_USERNAME=”root”
DB_PASSWORD= 
El DB_PASSWORD lo dejamos vacío ya que estamos usando la aplicación que viene con XAMPP, pero si utilizas Worbench deberás ponerle “root” en esta.
Nuestra base de datos se llamará: empresa como no la tenemos, la iremos a crear.
6. Guardar los cambios de todos los archivos y en la terminal de nuestro IDE escribimos el comando para ejecutar la migración:
 php artisan migrate


De esta manera hemos ejecutado la migración, aquí es posible que nos aparezca este error:
Para solucionar esto, todo lo que tiene que hacer es editar su archivo AppServiceProvider.php y, dentro del 

método de arranque, establecer una longitud de cadena predeterminada:

Antes de eso también debes agregar esta librería en la sección de los use:
use Illuminate\Support\Facades\Schema;
public function boot()
{
    Schema::defaultStringLength(191);
}
Laravel 5.4 realizó un cambio en el conjunto de caracteres predeterminado de la base de datos, y ahora es utf8mb4 que 
incluye soporte para almacenar emojis. Esto solo afecta a las nuevas aplicaciones y siempre que esté ejecutando 
MySQL v5.7.7 y superior, no necesita hacer nada.
Para aquellos que ejecutan MariaDB o versiones anteriores de MySQL,
 puede encontrar este error al intentar ejecutar migraciones.
Seguir con UTF-8
En este caso que no deseamos utilizar el utf8mb4 (que ahora es la configuración por defecto el Laravel 5.4), 
por el contrario deseamos seguir 
utilizando UTF-8, sólo tenemos que editar /config/database.php y encontrar estas dos líneas en el controlador de MySql:
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci'
Reemplazar esto por:
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci'
Antes de hacer esto, de igual manera se han creado dos tablas en nuestra base de datos, las cuales iremos 
a eliminar para volver y ejecutar
 nuevamente la migración. Si todo está correctamente al ejecutar la migración sucederá lo siguiente:


7. Como se puede observar nuestra tabla “empleados” se ha creado. Si no ha habido errores, en la base de datos encontrará definidas las
 tablas de empleados, migrations, password_resets, users.
8. Ahora escriba el comando para poblar de información de prueba la tabla de empleados, para ello en la consola de comandos escriba el comando:
php artisan make:seed EmpleadoSeeder


9. Vamos al directorio database/seeds y ahí encontraremos el archivo creado anteriormente. Dentro de este, en la sección uses, escribiremos:
use Faker\Factory as Faker;
use Faker\generator;
Las líneas de comando anteriores se usaran para incluir referencias al objeto Faker y de esta manera generar información falsa, la cual usaremos 
de prueba para poblar datos en nuestra tabla.
10. Ahora procedemos a escribir el comando insert, pero esto no se hará a través de una instrucción SQL, se realizará a través del objeto 
DB de Laravel, los comandos los estructuraremos de la siguiente manera:

11. Guardamos los cambios en el archive seeder, luego abrimos el archive DataBaseSeeder.php; escribimos el llamado para nuestro seeder
    $this->call(EmpleadoSeeder::class);
12. Guardamos todos los cambios, nos dirigimos a la consola de Windows y escribimos el comando artisan:
php artisan migrate:refresh –-seed

 Si vamos a revisar nuestra base de dato en la tabla empleados, aparecerá el registro que hemos ingresado con la acción anterior:

El comando anterior es una variación para crear la migración, borra las tablas anteriormente creadas(aunque estas contengan información), 
luego las vuelve a crear y después ejecuta el archivo(s) seeder para poblar con información de pruebas las tablas. Lo que se ha realizado
 hasta este paso es para crear la tabla y luego poblarla con un registro, si usted desea más registros, puede crear un ciclo repetitivo for 
de 1 a la cantidad de registros que desea y dentro de este ejecuta el bloque de código para insertar registros, luego en la consola de Windows
 vuelva a escribir el comando artisan del paso 12.

Luego de esto ejecutamos la migración y listo, ya hemos ingresado muchos registros a nuestra tabla:

Puede ser que te encuentres con un problema el cual no te permitirá visualizar el número de registros que has ingresado, 
para solucionar esto debes de modificar el número de filas en nuestra tabla, lo cambiamos de 25 a 500:
13. Ahora vamos a crear el controlador para hacer solicitudes al modelo de Laravel, para ello escriba el comando 
artisan:
Php artisan make:controller Listacontroller
14. Una vez creado, en la carpeta App/Http/Controllers encontrará el nuevo archivo, lo abrimos y definimos una función php que 
responderá para mostrar una lista de los empleados (sin orden, solamente extraer los datos exactamente de cómo están en la tabla), 
para ello en la sección uses indicamos que se solicita el modelo que representa la tabla de empleados.
Luego dentro de la definición de la clase ListaController escribir la función para solicitar todos los datos
15. Guardar los cambios anteriores. Para mostrar la lista de estudiantes extraídos, definimos una ruta en el archivo de rutas route/web.php
Route::get('/lista', 'ListaController@MostrarLista');
La ruta definida anteriormente no contiene el llamado a una función anónima, ahora contiene el llamado a una función con nombre definida
 en un controlador, también a esta ruta le podemos definir un nombre como se hizo en la publicación del sitio web estático con Laravel.
Una vez creada la ruta, vamos a nuestro navegador y ponemos la dirección: http://localhost/mi_primer_proyecto_laravel_2/public/lista
El resultado te mostrara todos los registros con su información individual





16.  Ahora procederemos a escribir otra función en el controlador para mostrar la lista de empleados de  sexo masculino 
(extracción de datos filtrado por el campo sexo); esta función recibirá un parámetro, este se extrae de la ruta

17. Ahora procedemos a escribir la ruta
Vamos a nuestro navegador y ponemos la siguiente dirección:
http://localhost/mi_primer_proyecto_laravel_2/public/listaporsexo/Femenino
Con esto le estamos diciendo que nos muestre todos los empleados del sexo Femenino
Y como se puede observar me ha traído 49 registros

Si necesitamos que nos muestre otra lista con el apellido Torphy, por ejemplo, hacemos lo mismo 
1. Creamos la función

2. Creamos la ruta
3. Lo visualizamos mediante la URL

Solo no ha traído un registro ya que solo existe un empleado con el apellido "Thorpy", pero con esto determinamos que lo que estamos 
haciendo está funcional

18. Ahora procedemos a escribir una ruta para extraer a los empleados donde indicamos el sexo y la dirección (dos parámetros url)
En el controlador escribimos la función para extraer la información:
Por ultimo vamos a nuestro navegador y ponemos la siguiente dirección:
http://localhost/mi_primer_proyecto_laravel_2/public/listaporsexodireccion/Masculino/South Stevie Ecuador
En esta dirección le damos dos parámetros que son el sexo, y la dirección 
Como se puede observar esto nos trae nada más un registro ya que solo existe una persona que vive en South Stevie Ecuador y
 que es de sexo Masculino:

De la misma forma se van definiendo las demás rutas para extraer la información de la tabla, la cual para presentarla se define una vista, quien 
realiza el trabajo para extraer la información es el modelo (ORM de Laravel), objeto que encapsula las instrucciones SQL y las ejecuta, 
luego nos devuelve los resultados para hacer con ellos lo que necesitemos.
Conclusión 
Esperamos que en este tutorial hayamos podido explicar de la mejor manera los pasos y el funcionamiento de las migraciones, modelos, 
controladores, seeders, rutas y otras funciones que hemos podido conocer mediante el ejercicio. No olvides que para cada tutorial también
 creamos un video en donde tratamos de explicar de la mejor manera nuestros proyectos o tareas. Tambien esperamos que hayas podido 
entender cada una de las cosas que hemos explicado. Hasta la próxima!


Definir los conceptos de modelo, controlador, migración y seeder



Comentarios

Entradas populares de este blog

Plantilla Blade

CRUD DE DATOS C#