viernes, 26 de mayo de 2017

Crear disparadores o Triggers con las migraciones de laravel

   



Creacion de Triggers de MySQL con las migraciones de Laravel:

En este tutorial, aprenderá cómo trabajar con MySQL en laravel 5.4.

Un Trigger (disparador) se define como una acción programada que se almacena en la base de datos y que se ejecuta cuando se produce algún evento a la tabla que esta apuntando.

En laravel, para  escribir la consulta Trigger (disparador en el la base de datos) utilizaremos el método DB::unprepared().

Para crear nuestro Trigger primero tenemos que crear nuestro archivo de migración usando el siguientes comando:

En este caso nuestro migración se llamara create_stock_venta_trigger
php artisan make:migration create_stock_venta_trigger

Ahora verá un archivo de migración en el database/migrations/, abra el archivo de migración:


Migración: CreateTrigger

Es este caso crearemos un disparador llamado tr_updStrockVenta asociado a la tabla detalle_venta , para que cuando se inserte a esta tabla, la cantidad del stock de los productos de la tabla articulo disminuya.

<?php

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

class CreateStockVentaTrigger extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        //
        DB::unprepared('
        
        CREATE TRIGGER tr_updStrockVenta AFTER INSERT ON detalle_venta
        FOR EACH ROW BEGIN
                UPDATE articulo SET stock=stock-NEW.cantidad
                WHERE articulo.idarticulo=NEW.idarticulo;

        END

        ');
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //
    }
}


Ejecutar la migración:


php artisan migrate


Y eso seria todo :)

César GI

About César GI

Lo que me importa es poder enseñar lo poco que se, por que asi como yo aprendo leyendo gracias a las personas que comparten sus conocimiento yo tambien quiero ayudar a la comunidad en español aportando lo poco que he aprendido hasta el momento.

1 comentarios:

Write comentarios
6 de febrero de 2018, 11:21 delete

Tengo dudas
En que parte le dices que si vende 10 al stock le descuente esos 10 vendidos y al revisar el inventario ya veas esos 10 descontados?

Reply
avatar