Header Ads Widget

Ticker

6/recent/ticker-posts

Tutorial de Laravel 6/7 y nuevas funciones: creación y migración de una base de datos MySQL

 Laravel 7 es la última versión del framework PHP más popular para desarrollo web. Viene con un montón de nuevas características y mejoras.

Nota: Laravel 6 es la versión actual de LTS (Long Time Support) en lugar de Laravel 5.5.

Laravel 6 se lanza en la fecha del 3 de septiembre de 2019, mientras que Laravel 7 se lanza el 3 de marzo de 2020 .

Para la versión 5.5, las correcciones de errores finalizarán el 30 de agosto de 2019, pero las actualizaciones de seguridad se realizarán hasta el 30 de agosto de 2020 .

Esta es una tabla de los documentos oficiales que muestra las fechas de lanzamiento y otras fechas importantes para las diversas versiones de Laravel:

Fecha de lanzamiento de Laravel 6

Resumen del tutorial de Laravel 6/7

En este tutorial, veremos las nuevas características de Laravel 6, aprenderemos cómo generar un proyecto de Laravel 6 usando Composer y cómo construir una aplicación web CRM desde cero. Veremos cómo configurar una base de datos MySQL para nuestra aplicación, crear modelos, migrar nuestra base de datos y crear controladores para exponer una API REST que luego se consumirá desde una interfaz Vue.js.

También aprenderá sobre los conceptos básicos de Laravel como enrutamiento, controladores, modelos y vistas, etc.

Las nuevas características de Laravel 6/7

Entonces, ¿qué hay de nuevo con Laravel 6 y 7?

Como se mencionó, Laravel 6 viene con un montón de nuevas características y mejoras como:

  • El soporte del control de versiones semántico ,
  • Compatibilidad con Vapor , una plataforma de implementación sin servidor para Laravel,
  • Respuestas de autorización mejoradas,
  • Middleware de trabajos: una nueva función que le permite ajustar la lógica personalizada en torno a la ejecución de trabajos en cola,
  • Colecciones perezosas: una nueva característica que aprovecha los generadores de PHP para permitirle trabajar de manera eficiente con conjuntos de datos muy grandes,
  • Mejoras de subconsultas elocuentes,
  • Interfaz de usuario de Laravel: la lógica de andamio de la interfaz de usuario, como Bootstrap o Vue, se extrae en su propio laravel/uipaquete.
  • Ignition: una página de error nueva e inteligente.

Consulte los documentos para obtener más detalles.

Para Laravel 7:

  • Laravel Airlock: un paquete oficial para la autenticación de API,
  • Casts elocuentes personalizados: te permiten agregar tus lances personalizados ganados,
  • Soporte CORS por defecto, es decir, sin complementos de terceros,
  • Etiquetas y mejoras de componentes de la hoja: le permite crear componentes sin clase,
  • Cliente HTTP: una API para realizar solicitudes HTTP,
  • Mejoras de velocidad de almacenamiento en caché de ruta, etc.

Conceptos básicos de Laravel 6/7

Si esta es la primera vez que trabaja con Laravel, comencemos aprendiendo sobre los conceptos básicos de Laravel. De hecho, estos conceptos son comunes entre la mayoría de los marcos de desarrollo web, por lo que si está familiarizado con otros marcos, debería poder comprenderlos fácilmente:

  • Enrutamiento
  • Modelos, controladores y vistas
  • Plantilla de hoja
  • Solicitudes y respuestas
  • Migraciones de bases de datos
  • Middlewares
  • ORM elocuente

Enrutamiento Laravel 6/7

El enrutamiento es una característica importante en cualquier aplicación web y le permite a su aplicación enrutar solicitudes HTTP al controlador apropiado que envía una respuesta apropiada, ya sea una vista HTML o una respuesta JSON.

En Laravel, el enrutamiento está integrado en el núcleo del marco y proporciona una API flexible y potente para que los desarrolladores faciliten la creación de rutas y mapearlas con sus controladores.

Simplemente funciona mapeando verbos HTTP como GET y POST a funciones que ejecutan las acciones apropiadas cuando se reciben solicitudes.

Por ejemplo, puede utilizar una solicitud GET para recuperar un recurso del servidor cuando se visita la ruta de enlace central o una solicitud POST para enviar un formulario.

Puede crear rutas en la routescarpeta de su proyecto en uno de los archivos disponibles:

  • api.php: Rutas API
  • channels.php: Canales de transmisión
  • console.php: Rutas de consola
  • web.php: Rutas web

Esta es una ruta de ejemplo:

Route::get('/', function () {
    return view('welcome');
});

Controladores Laravel 6/7

Un controlador Laravel re-presenta la parte C en la arquitectura MVC que es responsable de orquestar las operaciones entre la Vista y el Modelo y pasar información del modelo a la vista para renderizarlo.

Puede utilizar el siguiente comando para generar un controlador:

$ php artisan controller:make [Name]Controller

Laravel 6/7 Vistas

Una vista de Laravel representa la parte V de la arquitectura MVC. Son simplemente páginas HTML (con CSS y JavaScript) que componen la interfaz de usuario de la aplicación que se envían al cliente una vez procesadas y renderizadas. Las vistas son simplemente presentaciones, es decir, no contienen lógica empresarial.

Plantilla de hoja

Laravel utiliza un lenguaje de plantillas llamado Blade que es poderoso y fácil de usar. Admiten funciones modernas como la herencia, que permite la reutilización de plantillas.

Puede crear plantillas en la resources/viewscarpeta de su proyecto usando la blade.phpextensión.

Según los documentos oficiales :

Blade es el motor de plantillas simple pero potente que se proporciona con Laravel. A diferencia de otros motores de plantillas PHP populares, Blade no le impide usar código PHP simple en sus vistas. De hecho, todas las vistas de Blade se compilan en código PHP simple y se almacenan en caché hasta que se modifican, lo que significa que Blade agrega esencialmente cero gastos generales a su aplicación. Los archivos de vista Blade usan la .blade.phpextensión de archivo y generalmente se almacenan en el resources/viewsdirectorio.

Consulte los documentos para conocer todas las funciones de Blade.

Solicitud y respuestas

Los marcos tradicionales como Laravel funcionan según los ciclos de solicitud y respuesta HTTP. Las solicitudes se envían desde clientes utilizando verbos HTTP como GET, POST, DELETE y UPDATE. Cuando son procesados ​​por Laravel, las respuestas apropiadas se crean y se envían a los clientes.

El objeto de solicitud puede tener diversa información como entrada del usuario.

Se crea y envía una respuesta desde el controlador asignado a la ruta que recibió la solicitud.

Modelos y migraciones de Laravel 6/7

En Laravel, el modelo del patrón MVC representa la parte que contiene la lógica de negocio / dominio. Corresponde a una tabla en la base de datos y le permite interactuar con la base de datos con API de alto nivel.

Las migraciones le permiten crear las tablas de la base de datos inicial y sus campos y luego rastrear cualquier cambio realizado en el esquema de la base de datos durante el desarrollo o incluso en la producción y aplicarlos sin la necesidad de eliminar y volver a crear la base de datos cada vez.

Las migraciones pueden ser importantes en la producción más que en el desarrollo, ya que en la mayoría de los casos, puede eliminar una base de datos sin ningún problema cuando aún está desarrollando su aplicación, pero puede eliminar una base de datos de producción con datos de usuarios si necesita cambiar el esquema de su base de datos en el futuro. . En este caso, las migraciones pueden ayudarlo a evolucionar fácilmente la estructura de su base de datos manteniendo los datos antiguos.

Middlewares de Laravel

Los middlewares son piezas de código que se ejecutan antes de algunas solicitudes HTTP específicas antes de ejecutar los controladores correspondientes.

Laravel incluye varios middlewares integrados para autenticación y protección CSRF, pero también puede crear sus middlewares personalizados cuando sea necesario.

ORM elocuente de Laravel

Laravel hace uso de un ORM que significa Object Relationnal Mapper e implementa el patrón de registro activo de PHP. Esto le permite trabajar con bases de datos sin tener que lidiar realmente con SQL y las diferencias entre los sistemas de bases de datos.

El ORM de Laravel se llama ORM Eloquent y es un ORM muy potente y fácil de usar, que le permite interactuar con las tablas de la base de datos subyacente y definir relaciones entre ellas utilizando una sintaxis clara y concisa.

En Laravel, cada tabla de la base de datos se asigna a su modelo Eloquent correspondiente que contiene varios métodos para acceder y actualizar los datos en la tabla.

¿Qué es Laravel?

Laravel es un marco de desarrollo web para crear aplicaciones web con PHP. Es creado y mantenido por Taylor Otwell. Se basa en patrones de diseño modernos y potentes como MVC, inyección de dependencia y ORM.

Desde la versión 1, que se lanzó en junio de 2011 , el marco ha ido creciendo desde entonces para convertirse en uno de los marcos más potentes y populares de la comunidad PHP. Ahora está en la versión 7.

¿Cómo funciona Laravel Framework?

Laravel funciona proporcionando un conjunto de abtracciones sobre PHP y Symfony que facilitan la escucha de solicitudes y el envío de las respuestas correctas, ya sea datos JSON en el caso de REST o un documento HTML renderizado en una aplicación web tradicional. También proporciona un potente ORM que elimina todas las complejidades de tratar con bases de datos SQL y facilita las migraciones de bases de datos.

Un marco proporciona a los desarrolladores un conjunto de API y patrones para resolver problemas comunes de desarrollo web que encuentran los desarrolladores web. Laravel sigue una arquitectura MVC.

MVC significa Model View Controller y es un patrón de diseño arquitectónico que permite la separación de preocupaciones. Esta es su definición de Wikipedia :

Modelo – Vista – Controlador (generalmente conocido como MVC) es un patrón de diseño de software comúnmente utilizado para desarrollar interfaces de usuario que divide la lógica del programa relacionado en tres elementos interconectados. Esto se hace para separar las representaciones internas de información de las formas en que se presenta y acepta la información al usuario. Seguir el patrón de diseño MVC desacopla estos componentes principales, lo que permite la reutilización del código y el desarrollo paralelo.

Ahora que tenemos los conceptos básicos del marco, veamos los requisitos previos necesarios para trabajar con nuestro tutorial de Laravel 6.

Prerrequisitos

Deberá tener algunos requisitos previos para poder completar con éxito este tutorial:

  • Familiaridad con PHP 7,
  • Composer (una gestión de dependencias de PHP para PHP) instalado en su máquina. Puede dirigirse al sitio web oficial para obtener instrucciones sobre cómo descargarlo e instalarlo.
  • MySQL instalado en su sistema,
  • PHP> = 7.2.0 instalado en su sistema con las siguientes extensiones:
  • - PHP> = 7.2.0
  • - Extensión PHP BCMath
  • - Extensión PHP Ctype
  • Extensión PHP JSON
  • - Extensión PHP Mbstring
  • - Extensión PHP OpenSSL
  • - Extensión PHP PDO
  • - Extensión PHP Tokenizer
  • - Extensión PHP XML

Si tiene estos requisitos previos, comencemos creando nuestro primer proyecto web con Laravel 6.

Creando un nuevo proyecto de Laravel 7

Puedes crear un nuevo proyecto de Laravel 6 usando el siguiente comando desde tu terminal:

$ composer create-project --prefer-dist laravel/laravel crmapp 

Configurar la base de datos MySQL

Usaremos MySQL, el sistema de base de datos más popular utilizado por los desarrolladores de PHP y Laravel, así que asegúrese de haber creado una base de datos para su proyecto. Simplemente puede usar el mysqlcliente. Abra una nueva ventana de terminal y ejecute el siguiente comando:

$ mysql -u root -p

Se le pedirá una contraseña. Ingrese el que envió cuando configuró su instalación de MySQL y presione Enter.

Cuando los mysqlclientes inicien, ingrese la siguiente instrucción SQL para crear una base de datos:

mysql> create database l6db;

Nota : También puede usar phpMyAdmin para crear y trabajar con bases de datos MySQL. phpMyAdmin es una herramienta de interfaz web gratuita creada en PHP , destinada a manejar la administración de MySQL en la web. Es una herramienta más amigable para principiantes que comúnmente usan los desarrolladores de PHP.

Ahora, hagámosle saber a Laravel sobre nuestra base de datos creada. Abra el .envarchivo en la raíz de su proyecto y actualice las credenciales de MySQL con sus propios valores:

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1  
DB_PORT=3306  
DB_DATABASE=l6db 
DB_USERNAME=root 
DB_PASSWORD=<YOUR_DATABASE_PASSWORD>

Tenga en cuenta que debe proporcionar el nombre de usuario y la contraseña correctos para un usuario MySQL válido en su sistema y también el nombre correcto de una base de datos creada.

Esto permitirá que su aplicación se conecte a su base de datos MySQL.

También puede configurar la conexión de la base de datos en el config/database.php.

La configuración de la base de datos para su aplicación se encuentra en config/database.phpEn este archivo puede definir todas las conexiones de su base de datos, así como especificar qué conexión se debe utilizar de forma predeterminada. En este archivo se proporcionan ejemplos para la mayoría de los sistemas de bases de datos compatibles. Los documentos oficiales

A continuación, creemos las tablas de la base de datos usando el siguiente comando:

$ php artisan migrate

Nota : Hasta ahora, no creamos ningún modelo, pero Laravel hace uso de varias tablas, por lo que debemos ejecutar el comando anterior para crearlas en nuestra base de datos. Después de crear nuestros propios modelos, podemos ejecutar el artisan migratecomando nuevamente para actualizar la estructura de la base de datos.

Esta es la salida del comando:

Migrando la base de datos

Después de configurar los crendentails de su base de datos MySQL, deberá crear algunas tablas requeridas por Laravel ejecutando el migratecomando:

$ php artisan migrate

El migratecomando aplicará algunas migraciones integradas necesarias que crearán las tablas para usuarios, restablecimiento de contraseñas y trabajos fallidos. Estas tablas son necesarias para el funcionamiento interno de Laravel.

Esta es la salida de este migratecomando:

Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (0.39 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (0.33 secon
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated:  2019_08_19_000000_create_failed_jobs_table (0.23 seconds)

En este punto de nuestro tutorial de Laravel, si obtiene Laravel Migration Error: Error de sintaxis o violación de acceso: 1071 La clave especificada era demasiado larga; la longitud máxima de la clave es 767 bytes

Simplemente, abra el config/database.phparchivo y el cambio charsetcollationla siguiente manera:

'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',

Ejecutando un servidor de desarrollo PHP local

Antes de configurar un servidor completo como Apache, puede utilizar el servidor de desarrollo integrado de PHP para servir localmente su aplicación. En su terminal, ejecute el servecomando desde la raíz de su proyecto de la siguiente manera:

$ php artisan serve

Esto iniciará un servidor de desarrollo local en http://localhost:8000.

Si este comando no funciona correctamente, puede llamar al servidor incorporado PHP directamente usando el siguiente comando:

$ php -S localhost:8000 -t public/

Regrese a su navegador web y navegue hasta esa dirección, debería ver la siguiente interfaz:

Ejemplo de tutorial de Laravel 6

La aplicación que estaremos construyendo

Crearemos una aplicación CRM simple que permita a los gerentes de ventas administrar contactos, cuentas, clientes potenciales, oportunidades, tareas y actividades relacionadas.

En aras de la simplicidad, intentaremos agregar pocas interfaces como podamos en nuestra aplicación. La interfaz principal es un panel que contiene la tabla de contactos y su estado (cliente potencial, oportunidad y cliente). No agregaremos inicio de sesión y autenticación en este tutorial, ya que seremos el tema de otro tutorial.

En nuestra base de datos de CRM usaremos las siguientes tablas:

  • contactos  : contiene información sobre contactos / clientes, como nombre, dirección, empresa / cuenta,
  • actividades  : contiene actividades (llamadas telefónicas, reuniones y correos electrónicos, etc.) sobre los contactos,
  • cuentas  : contiene información sobre empresas de contacto,
  • usuarios  : contiene información sobre los usuarios de la aplicación

También usaremos las siguientes tablas JOIN:

  • contact_status  : contiene el estado del contacto, como un cliente potencial, una oportunidad o un cliente, que indica la etapa del ciclo de ventas
  • activity_status  : el estado de la actividad puede ser pendiente, en curso o finalizado,
  • contact_source  : contiene la fuente de contacto.

La contactstabla tiene los siguientes campos:

  • carné de identidad
  • título,
  • nombre de pila,
  • apellido,
  • correo electrónico,
  • teléfono,
  • habla a,
  • source_id,
  • fecha del primer contacto,
  • ID de la cuenta,
  • status_id,
  • user_id,

La contact_statustabla tiene los siguientes campos:

  • carné de identidad,
  • status = (prospecto, propuesta, cliente, archivado)

La contact_sourcemesa:

  • carné de identidad,
  • nombre

La accountstabla tiene los siguientes campos:

  • carné de identidad,
  • nombre,
  • descripción

La activitiestabla tiene los siguientes campos:

  • carné de identidad,
  • fecha,
  • descripción,
  • contact_id
  • status_id

La activity_statustabla tiene los siguientes campos:

  • carné de identidad,
  • estado

Conclusión

Como resumen de la primera parte de nuestro tutorial de Laravel 6/7, presentamos el marco de Laravel, vimos las nuevas características de Laravel 6/7, vimos los conceptos básicos requeridos para principiantes, creamos un proyecto usando Composer basado en la última v7 y configuró nuestra base de datos MySQL.

También hemos visto los requisitos de la aplicación CRM que crearemos a lo largo de esta serie de tutoriales. Si está listo, continuemos con el segundo tutorial donde crearemos modelos y migraciones para nuestra aplicación.

Publicar un comentario

0 Comentarios