Возможна ли интеграция триггера и валидатора в Laravel? - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть триггер.

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, запросы и тосты.

Если возникает исключение, настройте сообщение, например, в файле запроса ... и покажите его как сообщение "toast" справа.

Я действительно не знаю, как это сделать, если выйти из триггера и создать валидатор, который его перехватывает, или создает собственный валидатор без триггера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...