Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 你能在Laravel Eloquent中使用命名参数吗_Php_Sql_Oracle_Pdo_Laravel - Fatal编程技术网

Php 你能在Laravel Eloquent中使用命名参数吗

Php 你能在Laravel Eloquent中使用命名参数吗,php,sql,oracle,pdo,laravel,Php,Sql,Oracle,Pdo,Laravel,我使用Oracle作为数据库层,但问题是Oracle通过OCI8(我制作了一个PDO用户空间驱动程序)只支持SQL语句中的命名参数,而不支持定位参数。(例如使用多个?) 基本上,是Laravel的雄辩,生成了SQL,但我找不到任何关于如何重写参数构造的文档 我希望能够以“:name”的形式创建命名参数,而不是在整个查询中放置大量的“?” 这能做到吗?我猜这与数据库语法类有关…哦,如果有人有更好的解决方案,请提交,或者告诉我临时解决方案可能有什么问题。我用参数增量替换所有“?”:autoparam

我使用Oracle作为数据库层,但问题是Oracle通过OCI8(我制作了一个PDO用户空间驱动程序)只支持SQL语句中的命名参数,而不支持定位参数。(例如使用多个?)

基本上,是Laravel的雄辩,生成了SQL,但我找不到任何关于如何重写参数构造的文档

我希望能够以“:name”的形式创建命名参数,而不是在整个查询中放置大量的“?”


这能做到吗?我猜这与数据库语法类有关…

哦,如果有人有更好的解决方案,请提交,或者告诉我临时解决方案可能有什么问题。我用参数增量替换所有“?”:autoparam“,创建“:autoparam0”、“:autoparam1”、“:autoparam2”等

然后,当我从PDO收到绑定参数的请求时,我检查该参数是否为数字。据我所知,在大多数语言中,数值索引是无效标识符,因此我可以安全地假设,至少对于我的PDO用户空间驱动程序,我可以用以下内容替换数值参数名称:

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

现在可以了,我需要用laravel做更多的测试,看看问题是否以不同的分数出现,但到目前为止,似乎还可以…

您在那里编辑了哪些文件?我只是浏览了一下代码,看看它是如何处理绑定的。我刚刚编辑了我自己的PDO用户空间驱动程序,现在它与Laravel没有任何关系……你遇到过这个吗?希望这正是你想要的。是的,我正在使用它作为我的Laravel-OCI8包的基础,但正如我所说的,问题是OCI8的一部分,而不是Laravel或PDO_OCI。PDO_OCI并没有提供所有功能,可能是因为缺乏社区支持。因为我对C/C++不太了解,也没有时间在工作中编写代码,所以我创建了自己的PDO_OCI8层,它使用PHP用户空间来创建一个真正的PDO驱动程序。现在很好,谢谢
    //Replace the first @oci8param to a pseudo named parameter
    if(is_numeric($parameter))
    {
        $parameter = ':autoparam'.$parameter;
    }