sql >> Databasteknik >  >> RDS >> Oracle

Kan du använda namngivna parametrar i Laravel Eloquent

Nåväl, om någon har en bättre lösning, skicka in den eller berätta för mig vad som kan vara fel med min tillfälliga lösning. Jag ersätter alla "?" med ":autoparam" med en parameterökning som skapar ":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;

Sedan, när jag får en begäran om att binda en parameter från PDO, kontrollerar jag om parametern är numerisk. I de flesta språk, så vitt jag vet, är numeriska index ogiltiga identifierare, så jag kan säkert anta, åtminstone för min PDO Userspace-drivrutin att jag kan ersätta det numeriska parameternamnet med:

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

Det fungerar för tillfället, jag måste göra fler tester med laravel för att se om problemet dyker upp i en annan poäng, men än så länge verkar det okej...




  1. Prestanda:Underfråga eller Gå med

  2. Koppla Parse med extern databas?

  3. HTML-format i sp_send_dbmail

  4. Stöds Datamappers dm_mysql_adapter pärla på Windows?