是否可以在Laravel中集成触发器和验证器?

时间:2018-11-10 02:28:50

标签: laravel validation laravel-5

我有一个触发器。

CREATE OR REPLACE FUNCTION asset_constraint() RETURNS trigger AS $$

DECLARE
    max_assets INTEGER := 2;
    assets_count INTEGER := 0;
    must_check BOOLEAN := false;

BEGIN
    IF TG_OP = 'INSERT' THEN
        must_check := true;
    END IF;

    IF TG_OP = 'UPDATE' THEN
        IF (NEW.name != OLD.name) THEN
            must_check := true;
        END IF;
    END IF;

    IF must_check THEN
        -- prevent concurrent inserts from multiple transactions
        LOCK TABLE assets IN EXCLUSIVE MODE;

        SELECT INTO assets_count COUNT(*) 
        FROM assets; 
        --WHERE name = NEW.name;

        IF assets_count >= max_assets THEN
            RAISE EXCEPTION 'no puede añadir mas de % assets.', max_assets;
        END IF;
    END IF;

    RETURN NEW;
END;
$$ LANGUAGE plpgsql;


CREATE TRIGGER asset_constraint 
    BEFORE INSERT OR UPDATE ON assets
    FOR EACH ROW EXECUTE PROCEDURE asset_constraint();

Database exception

触发器正常工作,如果它计数超过2条记录,则它将发送异常。

现在,我不知道我们是否可以直接使用laravel中的验证程序来执行此操作,而无需触发器。我需要为消息使用javascript“ toast”功能,而不是橙色图片所示的异常。

用户通知运行良好,当我执行CRUD时,我使用ajax,请求和吐司。

如果发生异常,则在请求文件中自定义消息,例如...,并在右侧将其显示为“吐司”消息。

我真的不知道该怎么做,是否要离开触发器并制作一个捕获它的验证器,或者制作一个没有触发器的自定义验证器。

0 个答案:

没有答案