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

如何将参数绑定到模型上使用的Laravel中的原始数据库查询?

朱修德
2023-03-14
问题内容

回覆,

我有以下查询:

$property = 
    Property::select(
        DB::raw("title, lat, lng, ( 
            3959 * acos( 
                cos( radians(:lat) ) * 
                cos( radians( lat ) ) * 
                cos( radians( lng ) - radians(:lng) ) + 
                sin( radians(:lat) ) * 
                sin( radians( lat ) ) 
            ) 
        ) AS distance", ["lat" => $lat, "lng" => $lng, "lat" => $lat])
    )
    ->having("distance", "<", $radius)
    ->orderBy("distance")
    ->take(20)
    ->get();

它不起作用:Invalid parameter number: mixed named and positional parameters

有谁知道技巧或解决方法(我显然可以编写完整的查询,但更喜欢使用流利的生成器)。


问题答案:

好,经过一些实验,这是我想出的解决方案:

$property = 
    Property::select(
        DB::raw("title, lat, lng, ( 
            3959 * acos( 
                cos( radians(  ?  ) ) *
                cos( radians( lat ) ) * 
                cos( radians( lng ) - radians(?) ) + 
                sin( radians(  ?  ) ) *
                sin( radians( lat ) ) 
            )
       ) AS distance")
    )
    ->having("distance", "<", "?")
    ->orderBy("distance")
    ->take(20)
    ->setBindings([$lat, $lng, $lat,  $radius])
    ->get();

基本上,setBindings必须在查询上调用。希望记录在案!



 类似资料:
  • 重新, 我有以下疑问: 它不起作用:。 是否有人知道一个技巧或解决方法(我显然可以编写完整的查询,但更喜欢使用fluent builder)。

  • 问题内容: 这个问题不太可能对将来的访客有所帮助;它仅与较小的地理区域,特定的时间段或极为狭窄的情况(通常不适用于Internet的全球受众)有关。要获得使该问题更广泛适用的帮助,请访问帮助中心。 6年前关闭。 我有一个mysql查询,但无法为其绑定参数 我已经试过了 但我收到了并且出错了: 警告:mysqli_stmt :: bind_param():类型定义字符串中的元素数量与绑定变量的数量不

  • 我试图运行这个简单的原始sql语句与参数SQLALChemy(在一个alembic脚本): 我得到以下错误: 解决方案:

  • 问题内容: 我出于性能原因使用此sql 但是我有一个例外 有什么解决方法可以让我将列表绑定到’in’子句的参数? 问题答案: 对旧问题的新答案,因为自从首次发布此问题/接受的答案以来,似乎某些基本功能已发生更改(如@vicvicvic在@Gary的答案中所暗示的,但我认为它应该是提高可见度的答案) 。 现在支持类型修改,类型修改除了其他功能外,还允许将列表传递到查询中的单个参数化值中。这也可以在S

  • 问题内容: 现在,我需要使用以下结构来将多个参数绑定到mysqli查询中: 我使用以下代码计算出问号的数量,并将其插入查询中: 我的问题是,肯定有一种方法可以动态处理查询中尽可能多的输入。硬编码似乎是处理此问题的一种非常糟糕的方法。 我正在使用PHP版本5.4.10 问题答案: 不幸的是,默认情况下,bind_param()不接受数组而不是单独的变量。但是,自PHP 5.6起,将进行重大改进。 要

  • 我正在创建一个接口和链表的实现,如Java1.8: 接口没有编译器问题,但给出了错误其中我有