Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Você pode usar parâmetros nomeados no Laravel Eloquent


Bem, se alguém tiver uma solução melhor, envie-a ou talvez me diga o que pode estar errado com minha solução temporária. Eu substituo todos os "?" com ":autoparam" com um incremento de parâmetro criando ":autoparam0", ":autoparam1", ":autoparam2", etc.
    //Replace ? with a pseudo named parameter
    $newStatement = null;
    $parameter = 0;
    while($newStatement !== $statement)
    {
        if($newStatement !== null)
        {
            $statement = $newStatement;
        }
        $newStatement = preg_replace('/\?/', ':autoparam'.$parameter, $statement, 1);
        $parameter++;
    }
    $statement = $newStatement;

Então, quando recebo uma solicitação para vincular um parâmetro do PDO, verifico se o parâmetro é numérico. Na maioria dos idiomas, até onde eu sei, os índices numéricos são identificadores inválidos, então posso assumir com segurança, pelo menos para o meu driver PDO Userspace, que posso substituir o nome do parâmetro numérico por:
    //Replace the first @oci8param to a pseudo named parameter
    if(is_numeric($parameter))
    {
        $parameter = ':autoparam'.$parameter;
    }

Funciona por enquanto, preciso fazer mais testes com laravel para ver se o problema aparece em uma pontuação diferente, mas até agora, parece tudo bem...