MIGRACIONES EN LARAVEL


A medida que crea su aplicación, puede acumular más y más migraciones a lo largo del tiempo. Esto puede hacer que su directorio de migración se infle con potencialmente cientos de migraciones. Si lo desea, puede «aplastar» sus migraciones en un solo archivo SQL. Para comenzar, ejecute el comando schema: dump:

esquema artesanal php: volcado

// Volcar el esquema de la base de datos actual y eliminar todas las migraciones existentes …
esquema artesanal de php: dump –prune

Son ideales para trabajar en equipo, dado que elimina la necesidad de enviar fragmentos de SQL a través de email, mensajería, etc. Los programadores simplemente necesitan generar una nueva migración, escribir los cambios a la base de datos en ella y el resto del equipo puede simplemente ejecutar la migración.

ESTRUCTURA DE MIGRACION

Una clase de migración contiene dos métodos: hacia arriba y hacia abajo. El método up se usa para agregar nuevas tablas, columnas o índices a su base de datos, mientras que el método down debe revertir las operaciones realizadas por el método up.

Dentro de estos dos métodos, puede utilizar el generador de esquemas de Laravel para crear y modificar tablas de forma expresiva. Para conocer todos los métodos disponibles en el generador de esquemas, consulte su documentación. Por ejemplo, la siguiente migración crea una tabla de vuelos:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateFlightsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('flights', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('airline');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('flights');
    }
}

Modificar tablas existentes

A veces, necesita cambiar su estructura de tabla existente como renaming/deleting columnas. Lo que puede lograr creando una nueva migración. Y en el método up de su migración.

//Renaming Column.

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->renameColumn('email', 'username');
    });
}

El ejemplo anterior cambiará el nombre de la email column de email column de la users table de users table a username de username . Mientras que el siguiente código elimina un username de username columna de la tabla de users .

IMPROTANTE: para modificar columnas, debe agregar la dependencia doctrine/dbal al archivo composer.json del proyecto y ejecutar la composer update para reflejar los cambios.

//Droping Column
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->dropColumn('username');
    });
}
LOS ARCHIVOS DE MIGRACION

Las migraciones en una aplicación Laravel viven en el directorio database/migrations . Sus nombres de archivos se ajustan a un formato particular:

<year>_<month>_<day>_<hour><minute><second>_<name>.php

Un archivo de migración debe representar una actualización de esquema para resolver un problema particular. Por ejemplo:

2016_07_21_134310_add_last_logged_in_to_users_table.php

Las migraciones de la base de datos se mantienen en orden cronológico para que Laravel sepa en qué orden ejecutarlas. Laravel siempre ejecutará migraciones de la más antigua a la más nueva.

Generando archivos de migración

Crear un nuevo archivo de migración con el nombre de archivo correcto cada vez que necesite cambiar su esquema sería una tarea. Afortunadamente, el comando artisan de Laravel puede generar la migración para usted:

php artisan make:migration add_last_logged_in_to_users_table

También puede usar los --table y --create con el comando anterior. Estos son opcionales y solo por conveniencia, e insertarán el código relevante en el archivo de migración.

php artisan make:migration add_last_logged_in_to_users_table --table=users

php artisan make:migration create_logs_table --create=logs

Puede especificar una ruta de salida personalizada para la migración generada usando la opción --path . La ruta es relativa a la ruta base de la aplicación.

php artisan make:migration --path=app/Modules/User/Migrations

EJECUTANDO MIGRACIONES

Una vez que se haya escrito su migración, la ejecución aplicará las operaciones a su base de datos.

php artisan migrate

Si todo salió bien, verás una salida similar a la siguiente:

Migrated: 2016_07_21_134310_add_last_logged_in_to_users_table

Laravel es lo suficientemente inteligente como para saber cuándo está ejecutando migraciones en el entorno de producción. Si detecta que está realizando una migración destructiva (por ejemplo, una que elimina una columna de una tabla), el comando de php artisan migrate le pedirá confirmación. En entornos de entrega continua esto puede no ser deseado. En ese caso, use la bandera --force para omitir la confirmación:

php artisan migrate --force

Si acaba de ejecutar migraciones, puede confundirse al ver la presencia de una tabla de migrations en su base de datos. Esta tabla es lo que utiliza Laravel para realizar un seguimiento de las migraciones que ya se han ejecutado. Al emitir el comando migrate , Laravel determinará qué migraciones aún deben ejecutarse, las ejecutará en orden cronológico y luego actualizará la tabla de migrations para que se adapte.

Nunca debe editar manualmente la tabla de migrations menos que sepa absolutamente lo que está haciendo. Es muy fácil dejar inadvertidamente su base de datos en un estado defectuoso en el que las migraciones fallarán.

Protección CSRF en Laravel

Protección CSRF de Laravel | XperimentalHamid


Laravel facilita la protección de su aplicación de los ataques de falsificación de solicitudes entre sitios (CSRF).

Las falsificaciones de solicitudes entre sitios son un tipo de exploit malicioso mediante el cual se ejecutan comandos no autorizados en nombre de un usuario autenticado.

Lo que hace Laravel es generar automáticamente un «token» CSRF para cada sesión de usuario activa, manejada por la aplicación.

Este token es usado para verificar que el usuario autenticado es quien en realidad está haciendo la petición a la aplicación.

En cualquier momento que definas un formulario HTML en tu aplicación, debes incluir un campo de token CSRF en el formulario con el propósito de que el middleware para protección CSRF pueda validar la solicitud.

Puedes usar la directiva de Blade @csrf para generar el campo de token:PHP

123456 <form method=»POST» action=»/profile»>    @csrf    …</form> 

El middleware VerifyCsrfToken, el cual es incluido en el grupo de middleware web, verificará automáticamente que el token en el campo de la solicitud coincida con el almacenado en la sesión.


Tokens CSRF y JavaScript

Al crear aplicaciones basadas en JavaScript, es conveniente que su biblioteca HTTP de JavaScript adjunte automáticamente el token CSRF a cada solicitud saliente.

De forma predeterminada, la biblioteca HTTP de Axios proporcionada en el archivo resources / js / bootstrap.js envía automáticamente un encabezado X-XSRF-TOKEN utilizando el valor de la cookie XSRF-TOKEN cifrada.

Si no está utilizando esta biblioteca, deberá configurar manualmente este comportamiento para su aplicación.


X-XSRF-TOKEN

Laravel almacena el token CSRF actual en una cookie XSRF-TOKEN cifrada que se incluye con cada respuesta generada por el marco. Puede usar el valor de la cookie para configurar el encabezado de solicitud X-XSRF-TOKEN.

Esta cookie se envía principalmente como una conveniencia, ya que algunos marcos y bibliotecas de JavaScript, como Angular y Axios, colocan automáticamente su valor en el encabezado X-XSRF-TOKEN en solicitudes del mismo origen.

Instalar Laravel en tu Mac sin servidores locales como LAMPP o XAMPP

De seguro ya estas cansado de servidores locales como XAMPP, LAMPP y parecidos, si quieres Laravel en tu Mac para hacer tus deploys sin historias, has elegido la plataforma correcta.

lo primero que vamos a necesitar es que instales MySQL en tu Mac.

  • Descárgate MySQL Server para MacOS en este enlace.
  • Ejecuta el archivo dmg que se ha descargado para que empiece la instalación.
  • Sigue el proceso de instalación, te pedirá, entre otras cosas la contraseña como root. Guárdatela.
Instalar MySQL en Mac

Luego te recomendamos instalar Workbench aunque vale cualquier cliente de base de datos como HeidiSQL o Dbeaver.

La instalación de esta herramienta es muy sencilla, tan solo debes descarga y ejecuta el archivo dmg.

Cuando ya tengas tu cliente, crea una base de datos y un usuario para esta. lo siguiente es instalar PHP.  Es sencillo, abre la Terminal y pon el siguiente comando:

curl -s http://php-osx.liip.ch/install.sh | bash -s 7.3

Si no deseas la versión 7.3, puedes cambiar el último parámetro por la versión que quieras. Por ejemplo: 7.2, 7.1 o 5.6. Si quieres Laravel 6, mejor que sea la 7.3.

luego verifica si el PHP está instalado correctamente vamos a ejecutar el siguiente comando:

export PATH=/usr/local/php5/bin:$PATH
php -v

Este último comando te dirá si está PHP y qué versión.

Ahora ya sólo queda instalar Laravel, y para ello, suelo utilizar Composer. Para instalar Composer sólo tienes que teclear los siguientes comandos en tu Terminal:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Bueno ahora ya tenemos Composer, solo nos queda instalar Laravel. y para ello vamos a utilizar el siguiente comando.

php composer.phar  create-project --prefer-dist laravel/laravel=6.0 NOMBRE_DEL_PROYECTO

Donde 6.0 es la versión de Laravel a instalar y NOMBRE_DEL_PROYECTO el nombre que quieres poner.

Para poder arrancar Laravel tienes que, desde la Terminal, entrar al proyecto y ejecutar:

php artisan serve

date cuenta que entres a http://127.0.0.1:8000 desde tu navegador para que veas Laravel funcionando.

Laravel funcionando en local

Ciclo de vida de aplicación en Laravel

Cuando usamos cualquier herramienta en el «mundo real», se siente más seguro si comprende cómo funciona esa herramienta. El desarrollo de aplicaciones no es diferente. Cuando comprenda cómo funcionan sus herramientas de desarrollo, se sentirá más cómodo y seguro al usarlas.

El objetivo de este articulo es brindarle una buena descripción general del alto nivel de cómo funciona el marco de Laravel.

Al conocer mejor el marco general, todo se siente menos «mágico» y tendrá más confianza en la construcción de sus aplicaciones. Si no comprende todos los términos de inmediato, no te preocupes Solo intente obtener una comprensión básica de lo que está sucediendo, y su conocimiento crecerá a medida que explore otras secciones de la documentación.

El punto de entrada para todas las solicitudes a una aplicación de Laravel es el archivo public / index.php. Todas las solicitudes son dirigidas a este archivo por la configuración de su servidor web (Apache / Nginx). El archivo index.php no contiene mucho código. Más bien, es un punto de partida para cargar el resto del marco.

El archivo index.php carga la definición de autocargador generada por Composer y luego recupera una instancia de la aplicación Laravel del script bootstrap / app.php. La primera acción realizada por Laravel es crear una instancia del contenedor de la aplicación / servicio.

A continuación, la solicitud entrante se envía al kernel HTTP o al kernel de la consola, según el tipo de solicitud que ingresa a la aplicación. Estos dos núcleos sirven como la ubicación central por donde fluyen todas las solicitudes. Por ahora, centrémonos en el kernel HTTP, que se encuentra en app / Http / Kernel.php.

El kernel HTTP extiende la clase Illuminate \ Foundation \ Http \ Kernel, que define una matriz de bootstrappers que se ejecutarán antes de que se ejecute la solicitud. Estos bootstrappers configuran el manejo de errores, configuran el registro, detectan el entorno de la aplicación y realizan otras tareas que deben realizarse antes de que la solicitud se maneje realmente.

El kernel HTTP también define una lista de middleware HTTP por el que deben pasar todas las solicitudes antes de ser manejadas por la aplicación. Estos middleware manejan la lectura y escritura de la sesión HTTP, determinando si la aplicación está en modo de mantenimiento, verificando el token CSRF y más.

La firma del método para el método handle del kernel HTTP es bastante simple: recibe una solicitud y devuelve una respuesta. Piense en el Kernel como una gran caja negra que representa toda su aplicación. Aliméntelo con solicitudes HTTP y devolverá respuestas HTTP.

Proveedores de servicio
Una de las acciones de arranque del kernel más importantes es cargar los proveedores de servicios para su aplicación. Todos los proveedores de servicios para la aplicación están configurados en la matriz de proveedores del archivo de configuración config / app.php. Primero, se llamará al método de registro en todos los proveedores, luego, una vez que se hayan registrado todos los proveedores, se llamará al método de arranque.

Los proveedores de servicios son responsables de arrancar todos los componentes del marco, como la base de datos, la cola, la validación y los componentes de enrutamiento. Dado que arrancan y configuran todas las funciones que ofrece el marco, los proveedores de servicios son el aspecto más importante de todo el proceso de arranque de Laravel.

Solicitud de envío
Una vez que se ha iniciado la aplicación y se han registrado todos los proveedores de servicios, la solicitud se entregará al enrutador para su envío. El enrutador enviará la solicitud a una ruta o controlador, así como ejecutará cualquier middleware específico de ruta.

Centrarse en los proveedores de servicios
Los proveedores de servicios son realmente la clave para iniciar una aplicación Laravel. Se crea la instancia de la aplicación, se registran los proveedores de servicios y se entrega la solicitud a la aplicación de arranque. ¡Es realmente así de simple!

Tener un conocimiento firme de cómo se construye y arranca una aplicación de Laravel a través de proveedores de servicios es muy valioso. Los proveedores de servicios predeterminados de su aplicación se almacenan en el directorio de proveedores / aplicaciones.

De forma predeterminada, AppServiceProvider está bastante vacío. Este proveedor es un gran lugar para agregar los enlaces de contenedores de servicio y arranque de su propia aplicación. Para aplicaciones grandes, es posible que desee crear varios proveedores de servicios, cada uno con un tipo de arranque más granular.

Middlewares en Laravel

En este presente artículo vamos a ver qué es y como crear middlewares para nuestra aplicación Laravel.

veremos un uso muy útil de éstos, como puede ser el control de nuestras rutas cuando se encuentre en mantenimiento nuestra página.

¿Pero Qué son los middleware en laravel?

Un middleware en laravel es una clase que funciona como filtro en las rutas, es decir, podemos añadirle a nuestra ruta o grupo de rutas.

un middelware para restringir por ejemplo el acceso a éstas si un usuario no está autentificado en nuestra aplicación, como podrían ser las rutas donde el administrador gestiona su aplicación laravel.

El middleware más conocido y utilizado en laravel es uno de los que ya vienen creado por defecto, que es el middleware authenticate, que controla si un usuario esta logeado en nuestra aplicación.

Si añadiesemos el middleware de autenticación en nuestras rutas y el middleware comprobase que el usuario no esta autenticado lo redireccionaría por defecto a la ruta de login.

¿Como crear nuestro middelware en Laravel?

Para este ejemplo vamos a crear un middelware que comprobará si nuestra aplicación esta en modo mantenimiento.

de ser así redireccionaría al usuario a la vista donde aparecerá el mensaje de mantenimiento que crearemos más adelante.

Ahora crearemos nuestro middelware, que llamaremos «Maintenance», con el siguiente comando en nuestra consola:

php artisan make:middleware Maintenance

Una vez ejecutado este comando, lo encontraremos en la carpeta Middleware que se encuentra en la ruta  app/http/Middleware con el nombre de Maintenance.php. 

Ahora vamos a registrar el middleware en nuestra aplicación, para ello iremos a Kernel.php que se encuentra en la carpeta App/Http y nos dirijimos abajo del todo y añadimos en el array $routeMiddelware nuestro nuevo middelware:

protected $routeMiddleware = [
   ...
   ...
   'maintenance' => \App\Http\Middleware\Maintenance::class,

Ahora vamos a crear una nueva tabla en nuestra base de datos que será la encargada de guardar nuestra configuración de la aplicacion, como el mantenimiento de la página:

public function up()
{
   Schema::create('configurations', function (Blueprint $table) {
     $table->increments('id');
     $table->string('name');
     $table->boolean('state');
     $table->timestamps();
    });
}

guardaremos en nuestra tabla algo así, donde la columna state será el estado del mantenimiento (1 En mantenimiento, 0 No está en mantenimiento):

middelware laravel

Una vez hecho esto, iremos a nuestro middleware app/http/Middleware y añadiremos este código:

<?php

namespace App\Http\Middleware;
use Illuminate\Support\Facades\Auth;
use Closure;
use App\Configuration; //Recordar el modelo configuration para poder llamar a nuestra tabla

class Maintenance
 {
 /**
 * Handle an incoming request.
 *
 * @param \Illuminate\Http\Request $request
 * @param \Closure $next
 * @return mixed
 */
  public function handle($request, Closure $next)
   {
     if(Configuration::where(name, "mantenimiento")->state && !Auth::check()){
        return redirect('/mantenimiento');
      }
     return $next($request);
   }
 }

En la función handle añadimos la siguiente condición: «Si nuestra página está en modo mantenimiento y no estamos logeados, redirecciona a la ruta de mantenimiento».

Añadimos la comprobación de auth:check para comprobar si estamos logeados,en este caso damos por hecho que  solo el administrador puede logearse, si cualquier usuario pudiese registrarse a nuestra página entonces deberiamos cambiar esta condición y añadir si el usuario que esta logeado no es administrador.

Ahora iremos a nuestro archivo web.php que es donde se administran nuestra rutas y añadiremos nuestro middleware:

Route::group(['middleware' => ['maintenance']], function () {

/*Todas las rutas que esten en este grupo estaran restringidas si nuestro aplicacion esta
en mantenimiento y se restringira su paso si la pagina esta en mantenimiento.*/

 Route::get('/', function () {
   return view('welcome');
 });
 Route::get('/sobre-nosotros', function () {
   return view('about');
 });
 Route::get('/contactar', function () {
   return view('contact');
 });
});

//esta es la ruta a la que redireccinaremos si esta en mantenimiento, habría que crear la vista maintenance o como quieras llamarla.

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

Después de esto, solo quedaría crear una vista que mostrase un mensaje tipo : «Esta página esta en mantenimiento, vuelve pronto».

De esta forma ya tendriamos nuestro middelware listo.

Cómo instalar Laravel 7.10 en windows 10 con composer

Antes de comenzar con la instalacio de Laravel te vamos a decir que es, y para que sirve:

Laravel es un Framework de código abierto muy utilizado por desarrolladores web en PHP 5 y PHP 7, ideal para crear aplicaciones web modernas y seguras con autenticación de usuarios, también tiene caracteristicas elocuent que es el soporte para bases de datos, Laravel MVC como patrón de diseño, ademas cuenta con laravel layout template que es un motor de plantillas o layouts con directivas laravel Blade, entre otras mas.

requisitos previos a la instalación de Laravel

– Tener instalado XAMPP como servidor local en la PC.

Xampp contiene los servicios PHP y MYSQL básicos que necesita Laravel para poder trabajar.

Instalación de Composer

em primer lugar lo qu vamos hacer es descargar el instalador de COMPOSER utilizado por Laravel como el administrador de dependencias para PHP, el mismo que servirá para los proyecto a futuro que se quiera realizar.

debemos descargar el archivo que se pueda instalar para Windows en la version actual para que no tengamos inconveniente con el proyecto a realizar

Descargar composer paso2

lo siguiente que vamos hacer es ejecutarlo como administrador

Descomprimir Composer

luego aparecerá en la parte inferior derecha la palabra «next», damos clic y continuamos

Instalar composer paso1

luego pedirá que le indiquemos la ruta del php.exe que corresponde al servidor web local XAMPP de nuestro equipo. seguidamente damos clic en «next»

Instalar composer paso2

seguimos dando «next»

Instalar composer paso3

por ultimo damos clic en instalar y esperamos que finalice

Instalar composer paso4
Instalar composer paso6

ahora vamos a verificar si esta instalado correctamente, damos clic en WINDOWS + R, ingresar CMD y dar clic en aceptar, ya dentro de la consola ingresar cualquiera de los dos comandos siguientes y dar enter.

Composer instalado
la versión de composer puede variar dependiendo la fecha que lo instales

Instalación de Laravel: Lo que sigue ahora es descargar el Framework Laravel en el lugar que indiquemos haciendo uso de Composer.

para poder ingresar desde la consola vamos a utilizar el comando cd desktop, la misma que la ejecutaremos de la siguiente manera:

C:\Users\tu-nombre-usuario-pc>cd desktop

una vez que hemos ingresado al escritorio debemos ingresar el siguiente comando que realizará la descarga.

C:\Users\tu-nombre-usuario-pc\Desktop>composer create-project --prefer-dist la

 final de la línea hemos indicado el nombre del proyecto como blog. recuerda que puedes ponerle el nombre que deseas.

luego lo que vamos hacer es dar enter y esperamos unos segundos mientras se descargan los archivos del framework en su última versión.

Descargar laravel

una vez finalizada la descarga debemos tener una carpeta con todos los archivos descargados.

Para ejecutar el servidor y ver en funcionamiento Laravel, debemos ingresar a la carpeta del proyecto blog siempre desde línea de comandos.

C:\Users\tu-nombre-usuario-pc\Desktop>cd blog

una vez que hayas ingresado entra en el siguiente comando y dar enter:

C:\Users\tu-nombre-usuario-pc\Desktop\blog>php artisan serve

ahora nos debe mostrar el siguiente mensaje que ya se esta ejecutando.

Ejecutar laravel

Ahora cargamos el navegador preferido e ingresar en la url lo siguiente http://127.0.0.1:8000

Laravel ejecutado

Para detener la ejecución del servidor utilizar la combinación de teclas control +c

De esta forma comprobamos que Laravel ya esta funcionando el la PC.

Para instalar en la raiz de XAMPP

otra forma de descargar  framework Laravel directamente en la carpeta raiz htdoscs del servidor local XAMPP.

Para entrar al htdocs:

C:\>cd xampp/htdocs

NoneCopy

Seguidamente para descargar el framework.

C:xampp\htdocs>composer create-project --prefer-dist laravel/laravel blog

para ejecutar nuevamente el proyecto vamos a utilizar el siguiente comando :

C:xampp\htdocs\pruebalaravel>php artisan serve

para verificar la instalación usamos el siguiente comando:

C:\xampp\htdocs\pruebalaravel>php artisan --version

Finalmente ya tenemos listo el Framework para crear proyectos PHP en Laravel.