Oracle
 sql >> Base de données >  >> RDS >> Oracle

Pouvez-vous utiliser des paramètres nommés dans Laravel Eloquent

Eh bien, si quelqu'un a une meilleure solution, allez-y, soumettez-la ou dites-moi peut-être ce qui ne va pas avec ma solution temporaire. Je remplace tous les "?" avec ":autoparam" avec un incrément de paramètre créant ":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;

Ensuite, lorsque je reçois une demande de liaison d'un paramètre de PDO, je vérifie si le paramètre est numérique. Dans la plupart des langues, pour autant que je sache, les index numériques sont des identifiants invalides, donc je peux supposer en toute sécurité, au moins pour mon pilote PDO Userspace, que je peux remplacer le nom du paramètre numérique par :

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

Cela fonctionne pour l'instant, j'ai besoin de faire plus de tests avec laravel pour voir si le problème apparaît dans une partition différente, mais jusqu'à présent, ça semble aller...