3

I've created a trigger using migration in laravel and it migrated successfully, but i couldn't find the trigger in database, can someone please help.

My Laravel Version is 5.5

I've added the whole migration file below .

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

class CreateTrigger extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        $database           = config('database.default');
        $databaseUserName   = config('database.connections.'.$database.'.username');

        $definer = 'DEFINER=`'.$databaseUserName.'`@`%`';

        DB::unprepared('
            DROP TRIGGER IF EXISTS user_religion_details_AFTER_UPDATE;

            CREATE '.$definer.' TRIGGER user_religion_details_AFTER_UPDATE AFTER UPDATE ON `'.$databaseName.'.user_religion_details` 

            FOR EACH ROW

            BEGIN
                IF (NEW.religion_id <> OLD.religion_id) THEN
                    UPDATE users SET religion_id = NEW.religion_id  WHERE id = OLD.user_id;
                END IF;
            END
        ');
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        DB::unprepared('DROP TRIGGER `user_religion_details_AFTER_UPDATE`');
    }
}

please let me know where I'm doing something wrong

Reiah Paul Sam
  • 555
  • 6
  • 16

1 Answers1

0

Try:

public function up()
{
    $database           = config('database.default');
    $databaseUserName   = config('database.connections.'.$database.'.username');

    $definer = 'DEFINER=`'.$databaseUserName.'`@`%`';

    DB::unprepared('DROP TRIGGER IF EXISTS user_religion_details_AFTER_UPDATE');
    DB::unprepared('CREATE '.$definer.' TRIGGER user_religion_details_AFTER_UPDATE AFTER UPDATE ON `'.$databaseName.'.user_religion_details` 
        FOR EACH ROW
            BEGIN
            IF (NEW.religion_id <> OLD.religion_id) THEN
                UPDATE users SET religion_id = NEW.religion_id  WHERE id = OLD.user_id;
            END IF;
        END
    ');
}

Let me know if it seems working?

Dev
  • 6,570
  • 10
  • 66
  • 112