LARAVEL
Laravel es un marco de trabajo (framework), un conjunto de herramientas elaboradas en PHP ,
destinada a ayudar a la construcción de proyectos web usando el lenguaje PHP. Se especializa en
trabajar en el backend del proyecto (reglas de negocio, interacción con datos, seguridad) pero incluye
también características frontend a través de vistas para la creación de características del lado cliente.
Laravel acoge el patrón de diseño MVC (Model View Controller) que divide el proyecto en tres capas,
aproximadamente de esta manera:
1. Instalar PHP (Instalar PHP autónomo o desde un stack como Xampp)
2. Instalar Composer en modo Developer
3. Instalar Apache (opcionalmente si usa xampp)
4. Crear un project en cualquier carpeta de su equipo. (Necesita internet)
a. Project version 9:
composer create-project laravel/laravel: ^9.0 mi_proyecto_php
(Recomendada, no usar la más reciente por temas de depuración o bugs por corregir)
(Use la terminal de GIT o de Windows)
b. Project version 10:
composer create-project laravel/laravel mi_proyecto_php
-Laravel 9 necesita de una versión de PHP 8.x
(Ver sitio oficial Laravel en: https://laravel.com/)
Ejemplo de crear proyecto app_php usando una terminal de comandos de GIT:
composer create-project laravel/laravel: ^9.0 app_php
Estructura
Abriendo el proyecto desde Visual Studio Code:
Vistas, Modelos y Controladores.
El patrón de diseño MVC como tal es un conjunto de prácticas que han sido usadas y acogidas por la
industria como uno de los mecanismo de diseño de software web, con características probadas en su
funcionamiento, en torno a seguridad, modularidad, estandarización, Laravel nos recomienda seguir el
patrón MVC así como las propias reglas del framework para lograr unicidad de criterios en calidad y
facilidad de mantenimiento.
Los controladores son para MVC el conjunto de herramientas que se comunican con las vistas y
modelos para lograr la interacción de la aplicación de software.
En Laravel, los controladores se encuentran en este espacio y tienen esta apariencia, el controlador por
defecto se llama Controller, utiliza las clases que se revelan en este espacio y se deriva por herencia
del controlador BaseController:
Modelos.
Un modelo es una herramienta de software que interactúa con las tablas del modelo de datos de la
aplicación, se especializa en bases de datos relacionales como MySQL, Postgree, Oracle y otras de
importancia. Cada tabla de un proyecto Laravel tiene un Modelo con el cual interactúa en el sistema de
BD.
El modelo inicial, por defecto de Laravel es User:
Migraciones
Las migraciones son una interfaz que interactúa desde clases PHP con entidades SQL de las bases de
datos con las cuales se comunica, la tecnología de comunicación entre modelos de Clases y modelos
Relacionales se conocen como ORM (Objetc Relational Mapping). El ORM de Laravel se conoce
como Elocuent.
Observemos la estructura de proyecto Laravel en ella la carpeta ‘database’, la tecnología de
migraciones permite también llevar un registro de los cambios que se hacen en la bd, a manera de un
control de versiones.
Las migraciones por defecto en Laravel 9.0 son estas: users, password_resets, failed_jobs y
personal_access_tokens:
Cada archivo de migración está configurando tablas de la base de datos con acceso a clases, métodos,
funciones anónimas y métodos encadenados:
Llamado a clases Migration, Blueprint y Schema del escosistema Laravel con uso de herencia de la
clase Migration:
Aquí la función up() que llama a la clase Schema, al método estático create y dentro de ella los
argumentos que llaman a una instancia $table de la clase Blueprint
La clase Blueprint y su objeto $table llama a diversos métodos: id(), string(), timestamp(),
timestamps() y remembeerToken() con algunos parámetros, en ellos.
Estos métodos y sus parámetros hacen la construcción de una tabla ‘users’ que viene por defecto en el
proyecto. Cada llamado al objeto $table creará una columna en esa tabla.
Convenciones para migraciones:
Cada vez que se cree una migración para una determinada tabla de la base de datos, debe nombrarla de
la siguiente forma, utilizando nombres cortos (recomendados en inglés y plural), aunque usarla en otros
idiomas también funcionará:
php artisan make:migration create_name_table.
Ejemplo:
php artisan make:migration create_table_products
Comando Comando Utilidad
php artisan make:migration Crear la migración.
nombre_migracion
php artisan migrate Ejecutar la migración.
php artisan migration:refresh Deshacer todas las migraciones de la base de datos.
php artisan migrate:rollback Deshace la última migración ejecutada y registrada
en la base de datos.
php artisan migrate:reset Deshace todas las migraciones.
php artisan migrate:install Crear tablas migrations
php artisan migrate:status Ver el estado de la migración
php artisan db:wipe Elimina las tablas de la BD
Php artisan migrate:fresh Actualiza cambios en las migraciones del sistema
Comandos Make con Artisan:
Ejercicio1
Usando el sitio de Laravel https://laravel.com/docs/9.x
Explique el significado de estas líneas de código en migraciones Laravel:
$table->bigIncrements('id');
$table->bigInteger('cantidad');
$table->binary('miFotografia');
$table->boolean('activo');
$table->char('nombre', 100);
$table->dateTimeTz('created_at', $precision = 0);
$table->dateTime('created_at', $precision = 0);
$table->date('created_at');
$table->decimal('precio', $precision = 8, $scale = 2);
$table->enum('genero', ['M', 'F']);
$table->float('peso', 8, 2);
$table->foreignId('user_id');
$table->foreignIdFor(User::class);
$table->increments('id');
$table->integer('edad');
$table->string('nombreCliente, 100);
$table->text('descripcion');
$table->time('amanecer', $precision = 0);
$table->timestamp('agregadoEn', $precision = 0);
$table->timestamps($precision = 0);
$table->tinyIncrements('id');
$table->unsignedBigInteger('votacion');
$table→unsignedSmallInteger('votes');
//Describa el significado de este bloque de código
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
Schema::table('users', function (Blueprint $table) {
$table->string('email')->nullable();
});
//Fin de bloque
//Describa el significado de este bloque de código
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
Schema::table('posts', function (Blueprint $table) {
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users');
});
//Fin de bloque
Ejercicios2. Crear tablas y relaciones SQL a través de migraciones Laravel
Crear estas migraciones en su proyecto, revise el idioma y procure usar como llaves primarias
unicamente id() utilizando el método id().
Ejemplo: $table→id(); No agregue mas atributos al método id(), no haga esto: $table→id(‘id_cliente’)
Todas las tablas deben estar en minúsculas y plural
Rutas.
Las rutas son accesos a los recursos Laravel, hay dos tipo principales: las rutas API, y las rutas web,
estas últimas cuando el usuario envía peticiones en un sitio web, como llamar una página, pulsar un
link. Esta es la apariencia en Laravel, dentro de la carpeta resources\routes:
La estructura de la ruta usa la clase Route con el método estático get y una función anónima también
conocida como clousure para ver esto:
El método get invoca una función anónima que retorna una vista ‘welcome’ desde la función view(),
aquí la ruta está dinamizando la aplicación al llamar una vista cuando el usuario esté en la raíz del
proyecto ‘/’
Lo que hace esta ruta es desplegar la vista welcome en el navegador. Welcome como veremos es un
archivo basado en html: Las rutas se ven en la barra de navegación de su browser web.
Si nuestra ruta se llama clientes, podría aparecer así en el archivo web.php de Laravel:
Y en el navegador así:
Ahora, si una ruta clientes1 no existe, en el navegador arroja un error 404 de recurso no encontrado:
Por su parte, las vistas son otro de los tres elementos de MVC, Laravel cuenta con un motor de
plantillas llamado Blade que es un software potente de diseño de vistas bajo código html, css y por
supuesto encapsula código php. La vemos en la carpeta resources\views:
El contenido de las vistas Blade y por supuesto del archivo welcome.blade.php es un html que
incorpora comandos PHP llamados directivas PHP:
Aquí vemos directivas PHP en forma por ejemplo de @if(Route::has(‘login’)) que pregunta por la ruta
‘login’, si la respuesta es verdadero, empieza a dibujar el contenedor DIV , es decir que con las
directivas de Blade se puede hacer interactividad en la vista, para mostrar o dejar de mostrar algún
contenido o dirigirse a una nueva ruta o vista según la lógica de una aplicación. También con
directivas Blade se puede orientar la aplicación hacia una ruta si un usuario está o no autenticado en
el sistema, o dirigirlo a una vista si es usuario administrador.
Por lo pronto revisemos el llamado de las rutas desde el navegador: Esta ruta /saludo nos debe
retornar solo un mensaje, note que no necesitamos un echo o un print():
Si la ruta fuera de otra forma /sena/cide/saludo:
Se llama de este modo en el navegador:
Ejercicio 3.
Crear 5 rutas en Laravel llamadas:
-/colombia: Agregue allí tres DIV con estilos de bootstrap o de un framework css que usted escoja, allí
debe permitir ver varios párrafos con contenido de texto de prueba loren ipsum acerca de
información de Colombia
Así mismo las siguientes rutas y despliegue desde Laravel su contenido
-/peru
-/bolivia
-/mexico
-/brasil
Eloquent ORM de Laravel
La interacción entre Laravel y la base de datos se hace a través de la mencionada tecnología de mapeo
relacional de objetos ORM (Objet Relational Mapping), aquí la herramienta Laravel es el ORM
Eloquent con el cual se hacen interacciones o querys SQL con la base de datos que esté conectada. No
se pretende ni se aconseja que la interacción a la base de datos se haga con sentencias directas SQL
aplicadas al modelo relacional de la BD (Insert, Select) sino que el ORM Eloquent de Laravel lo haga
por nosotros.
Dentro del patrón MVC, la M (Model) permite crear una capa encargada de gestionar el acceso a las
tablas SQL, los modelos de Laravel son el mecanismo de interacción ORM con las tablas.
Los modelos Laravel se crean así:
php artisan make:model nombre del modelo:
Los modelos se escriben en singular con mayúscula inicial de la notación Upper Camel Case.
Ejemplo:
php artisan make:model Country
Si queremos crear una migración para manejar la tabla del modelo Country podemos hacerlo así:
php artisan make:model Country -m
Con esto Laravel creará el modelo Country y una migración ‘countries’, en inglés, minúsculas y plural,
si no lo hacemos en ese idioma, seguramente Laravel solo agregará una s al final para crear el modo
plural de Country, es decir que si creamos un modelo Proveedor con el atributo -m quedará como
proveedors y no proveedores como quisiésemos en castellano.
El resultado del comando se ve enseguida con un Modelo y una migración en el editor de VSC:
php artisan make:model Country -m
Se creó también la migración para una tabla countries: