sql >> Base de Datos >  >> RDS >> Oracle

¿Puedes usar parámetros con nombre en Laravel Eloquent?

Bueno, si alguien tiene una solución mejor, envíela o tal vez dígame qué podría estar mal con mi solución temporal. Reemplazo todos los "?" con ":autoparam" con un incremento de parámetro creando ":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;

Luego, cuando recibo una solicitud para vincular un parámetro de PDO, verifico si el parámetro es numérico. En la mayoría de los idiomas, hasta donde yo sé, los índices numéricos son identificadores no válidos, por lo que puedo suponer con seguridad, al menos para mi controlador de espacio de usuario de PDO, que puedo reemplazar el nombre del parámetro numérico con:

    //Replace the first @oci8param to a pseudo named parameter
    if(is_numeric($parameter))
    {
        $parameter = ':autoparam'.$parameter;
    }

Funciona por ahora, necesito hacer más pruebas con laravel para ver si el problema aparece en una puntuación diferente, pero hasta ahora parece estar bien...