Laravel 62652fecd82350a
Laravel 62652fecd82350a
Laravel 62652fecd82350a
Laravel acoge el patrón de diseño MVC (Model View Controller) que divide el proyecto en tres capas,
aproximadamente de esta manera:
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
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.
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.
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á:
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');
$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
planatillas 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’
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():
Ejercicio 3.