Oracle
 sql >> база данни >  >> RDS >> Oracle

Можете ли да използвате именувани параметри в Laravel Eloquent

Добре, ако някой има по-добро решение, нека го изпрати или може би да ми каже какво не е наред с моето временно решение. Заменям всички "?" с ":autoparam" с нарастване на параметър, създаващо ":autoparam0", ":autoparam1", ":autoparam2" и т.н.

    //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;

След това, когато получа заявка за обвързване на параметър от PDO, проверявам дали параметърът е числов. В повечето езици, доколкото знам, числовите индекси са невалидни идентификатори, така че мога спокойно да предположа, поне за моя драйвер за потребителско пространство на PDO, че мога да заменя името на цифровия параметър с:

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

Засега работи, трябва да направя още тестове с laravel, за да видя дали проблемът се появява в различен резултат, но засега изглежда добре...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Избор на пейджинг, в база данни или в уеб приложението

  2. Как да получите списък с естествени функции на Oracle като (NVL, ABS и т.н.)

  3. Използването на GROUP BY с XMLCast и XMLQuery дава ORA-22950

  4. Oracle ODP.Net с Entity Framework 6 - ORA-00955 на Избор от табличен изглед

  5. Анализирайте SOAP XML в Oracle с пример