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