当前位置: 首页 > 面试题库 >

您可以在Laravel Eloquent中使用命名参数吗

姬凡
2023-03-14
问题内容

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

从根本上讲,是Laravel的Eloquent生成了SQL,但是我找不到任何有关如何重写参数构造的文档。

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

能做到吗?我的猜测是它与数据库语法类有关…


问题答案:

哦,好吧,如果有人有更好的解决方案,请继续提交它,或者告诉我我的临时解决方案有什么问题。我替换所有的“?”
用“: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
Userspace驱动程序,我可以放心地假设我可以将数字参数名称替换为:

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

它现在可以使用,我需要对laravel进行更多测试,以查看问题是否以不同的分数出现,但是到目前为止,看来还可以…



 类似资料:
  • 问题内容: 我正在考虑拥有一个可以根据需要动态创建新表的程序。我可以在MySQL中使用仅以数字命名的表吗? 问题答案: 命名对象的规则,包括MySql中的表: http://dev.mysql.com/doc/refman/5.1/zh- CN/identifiers.html 标识符可以以数字开头,但 除非加引号, 否则不能仅由数字组成。 因此,这将是无效的: 但是以下内容将有效: 或者,如果以

  • 4.2. 使用可选参数和命名参数 Python 允许函数参数有缺省值;如果调用函数时不使用参数,参数将获得它的缺省值。此外,通过使用命名参数还可以以任意顺序指定参数。SQL Server Transact/SQL 中的存储过程也可以做到这些;如果你是脚本高手,你可以略过这部分。 info 函数就是这样一个例子,它有两个可选参数。 def info(object, spacing=10, coll

  • 例子: 参考:https://docs.python.org/3/library/enum.html#planet 我为什么要这么做?如果构造函数列表中有一些基本类型(int,bool ),使用命名参数会更好。

  • 我在TypeScript中使用命名参数时遇到问题。我知道它不支持我在TypeScript中使用它的方式。 但是我该怎么做呢? 打字稿: JavaScript: 我在看(这没有成功): 有没有办法在JavaScript中的函数调用中提供命名参数? 如何将可选的命名参数添加到 TypeScript 函数参数? 我可以在 TypeScript 中做什么,以便在 JavaScript 中使用命名参数? 我

  • 我试图重载一个乘法运算符,但不想输入多个重载函数来考虑整数与浮点、整数与双精度、浮点与整数的乘法等等。。。我希望编写一个重载运算符来解释所有带浮点数、整数和double的乘法组合,并得到正确的返回类型。我得到的错误是,没有找到接受“Widget::Widget”类型的右操作数的运算符(或者没有可接受的转换)。我想这是因为我正在使用decltype来设置返回对象小部件的模板类型。如果返回不是模板对象

  • 问题内容: 我可以用作python函数参数的名称吗? 问题答案: 可以,但是不可以。使用内置名称不是一个好习惯,因为它们会覆盖该作用域中的内置名称。如果您必须使用该单词,请针对给定的上下文对其稍加修改。 尽管对于一个不使用的小型项目来说可能无关紧要,但最好不要使用关键字/内置名称的习惯。如果您绝对必须使用与关键字冲突的名称,则《Python样式指南》提供了解决方案: :按惯例用于避免与Python