MySQL 事件監聽 huangdijia/Laravel-trigger

遊離不2發表於2019-05-31

安裝

Laravel

composer 安裝

composer require huangdijia/laravel-trigger

釋出配置

php artisan vendor:publish --provider="Huangdijia\Trigger\TriggerServiceProvider"

Lumen

composer 安裝

composer require huangdijia/laravel-trigger

複製配置 config/trigger.phpconfig/

cp vendor/huangdijia/laravel-trigger/config/trigger.php config/

複製路由 routes/trigger.phproutes/

cp vendor/huangdijia/laravel-trigger/routes/trigger.php routes/

編輯 bootstrap/app.php,註冊服務及載入配置:

$app->register(Huangdijia\Trigger\TriggerServiceProvider::class);
...
$app->configure('trigger');

配置

編輯 .env, 配置以下內容:

TRIGGER_HOST=192.168.xxx.xxx
TRIGGER_PORT=3306
TRIGGER_USER=username
TRIGGER_PASSWORD=password
...

啟動服務

php artisan trigger:start

訂閱者

<?php
namespace App\Listeners;

use Huangdijia\Trigger\EventSubscriber;

class ExampeEvent extends EventSubscriber
{
    public function onUpdate(UpdateRowsDTO $event)
    {
        //
    }

    public function onDelete(DeleteRowsDTO $event)
    {
        //
    }

    public function onWrite(WriteRowsDTO $event)
    {
        //
    }
}

事件路由

use Huangdijia\Trigger\Facades\Trigger;

單表單事件

Trigger::on('database.table', 'write', function($event) { /* do something */ });

多表多事件

Trigger::on('database.table1,database.table2', 'write,update', function($event) { /* do something */ });

多事件

Trigger::on('database.table1,database.table2', [
    'write'  => function($event) { /* do something */ },
    'update' => function($event) { /* do something */ },
]);

路由到操作

Trigger::on('database.table', 'write', 'App\\Http\\Controllers\\ExampleController'); // call default method 'handle'
Trigger::on('database.table', 'write', 'App\\Http\\Controllers\\ExampleController@write');

檢視事件列表

php artisan trigger:list

終止服務

php artisan trigger:terminate

更多事件說明參考 EventSubscribers

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章