Laravel 5.1 DB::statement 命名绑定返回 "SQLSTATE[HY093]: Invalid parameter number"

Laravel 5.1 DB::statement with named binding returning "SQLSTATE[HY093]: Invalid parameter number"

我有以下代码:

DB::statement(
    "DO $$
    BEGIN
        DELETE FROM sku_inativacao WHERE active = true;
        
        INSERT INTO sku_inativacao (id_sku, id_motivo, created_at, updated_at) (
            SELECT 
                id_sku, 
                CASE
                    WHEN data_u_venda is null AND estoque_atual = 0 THEN 1
                    WHEN data_u_venda < current_timestamp - interval '2 years' THEN 2
                END id_motivo,
                current_timestamp AS created_at,
                current_timestamp AS updated_at
            FROM 
                sku
            WHERE
                data_criacao::timestamp < current_timestamp - interval ':diasCriacao days'
                and fase_vida < 3
            AND
                (data_u_venda is null AND 
                estoque_atual = 0)
            OR
                (data_u_venda < current_timestamp - interval '2 years')
        ) ON CONFLICT (id_sku) DO nothing;
    END $$;",
    ['diasCriacao' => $this->diasCriacao ?? 90]
);

据我在文档中看到的那样,这是正确的,但是使用命名投标 returns:

SQLSTATE[HY093]: Invalid parameter number: :diasCriacao

并使用普通绑定 returns:

SQLSTATE[08P01]: <>: 7 ERROR:bind message supplies 1 parameters, but prepared statement "pdo_stmt_00000004" requires 0

我该怎么做才能解决这个问题?遗憾的是,我正在使用 Laravel 5.1。

已通过不使用 DB::statement 解决此问题。当与 DB::update 一起使用时,它使用提供的参数,它似乎是 Laravel 5.1

中的错误