php - Lumen whereRaw 与准备好的语句不返回任何内容

标签 php mysql lumen

我正在尝试使用此查询从数据库中获取值

$vouchers = MerchantVoucher::where([
            'merchant_id' => $this->merchant->id,
            'code' => $voucherCode
        ])
        ->whereRaw("
            (
                (valid_from between '{$voucherValidFrom}' and '{$voucherValidTo}' ) || 
                (valid_to between '{$voucherValidFrom}' and '{$voucherValidTo}')
            )"
        )
        ->count();

通过这个查询,我得到了预期的结果,它返回一个行数。 我尝试使用下面的查询的准备语句来优化查询

    $vouchers = MerchantVoucher::where([
        'merchant_id' => $this->merchant->id,
        'code' => $voucherCode
    ])
    ->whereRaw("
        ( 
            (valid_from between '?' and '?' ) || 
            (valid_to between '?' and '?' ) 
        )", 
        [
            $voucherValidFrom, 
            $voucherValidTo, 
            $voucherValidFrom, 
            $voucherValidTo
        ]
    )
    ->count();

当我使用此查询时,它返回 0。

有人对此有解释吗?预先感谢您!

非 PHP 用户的原始 Sql 比较

 select count(*) from `merchant_vouchers` where (`merchant_id` = ? and `code` = ?) and 
                (
                    (valid_from between '2019-12-03 11:36:35' and '2019-12-10 11:36:35' ) || 
                    (valid_to between '2019-12-03 11:36:35' and '2019-12-10 11:36:35')
                ) and `merchant_vouchers`.`deleted_at` is null

返回1

  select count(*) from `merchant_vouchers` where (`merchant_id` = ? and `code` = ?) and 
                ( 
                    (valid_from between '?' and '?' ) || 
                    (valid_to between '?' and '?' ) 
                ) and 
                `merchant_vouchers`.`deleted_at` is null

返回0

使用的框架:Lumen

数据库:MySQL

最佳答案

您需要删除占位符周围的引号: valid_from 之间?和?

关于php - Lumen whereRaw 与准备好的语句不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59155944/

相关文章:

php - PHP crypt() 函数的 salt 参数和返回值如何工作?

php - MySQL 查询准备语句不返回任何结果

mysql - 使用内连接、左连接或右连接来连接 2 个表

php - 如何将带有自定义链接的按钮添加到 WordPress 仪表板?

php - BackboneJS - 如何建立与 MySQL 数据库的连接

mysql - 使用 ClearDB 插件将使用 MySQL 的 Rails 应用程序部署到 Heroku

mysql - 在网格单元值更新时更新数据库表

docker - Kubernetes - 通过 ssh 连接到远程数据库服务器

php - laravel/lumen-installer : guzzlehttp/guzzle locked at 6. 3.0 安装失败

php - 流明中的 Elasticsearch 在结果数据中给出空项目