我的应用程序动态构建并运行复杂的查询以生成报告.在某些情况下,我需要获得多个有点随意的日期范围,而所有其他参数都是相同的.

因此,我的代码使用一系列连接、位置、排序、限制等构建查询,然后运行查询.然后我想做的是跳转到Builder对象并更改定义要查询的日期范围的where子句.

到目前为止,我已经将日期范围设置在任何其他Where之前,然后try 手动更改Where数组的相关属性中的值.这样地;

$this->data_qry->wheres[0]['value'] = $new_from_date;
$this->data_qry->wheres[1]['value'] = $new_to_date;

那我就做(我已经做过一次了)

$this->data_qry->get();

但不管用.查询只在原始日期范围内运行.即使我的方式有效,我仍然不喜欢它,因为它似乎是一种不稳定的依赖(某种耦合?).Ie;如果没有先设定日期,那么一切都会分崩离析.

我从头开始重新设置整个查询,只是使用了不同的日期范围,但这似乎是因为查询中的所有其他内容都需要与上次使用时相同.

任何关于如何以正确/整洁的方式实现这一目标的 idea 都是非常受欢迎的.

谢谢

杰夫

推荐答案

您可以使用clone复制查询,然后使用不同的WHERE语句运行它.首先,在不带From-To约束的情况下构建查询,然后执行如下操作:

$query1 = $this->data_qry;
$query2 = clone $query1;

$result1 = $query1->where('from', $from1)->where('to', $to1)->get();
$result2 = $query2->where('from', $from2)->where('to', $to2)->get();

Php相关问答推荐

未找到laravel cascadeOnEdit

在AJX请求中使用简写后,FormData出现非法调用错误

在WooCommerce管理订单列表中显示项目总权重

将一个按钮添加到WooCommerce产品的管理视图中,该按钮链接到一个自定义的WebHook,并在末尾附加产品ID

PHP文件上载问题-";Move_Uploaded_Files";未按预期工作

允许客户定义特定WooCommerce产品的价格

是否使用联系人表单7 wpcf7_Feedback_Response输出答复中的html?

如何在codeigniter中将order_by RAND与下面的代码一起使用

PHP 8.2 弃用日志(log)存储在 Laravel 10.22.0 中的哪里?

过滤会员计划标题和标签

在 mysql 上的 PDO 中启用自动提交并将自动提交设置为关闭

计算数组中连续值的数量

跟踪通过 WooCommerce 分层定价表插件进行的购买

在WooCommerce购物车和 checkout 页面中更改总计文本

如何设置Mailersend PHP API 模板变量?

$_SERVER 超全局变量在 PHP 中是否保证可写?

在WooCommerce我的账户单个订单页面中添加订单商品部分和按钮

在wordpress注销后防止后退操作

NetBeans 不显示中文内容

如何获取最后一条消息属于 Laravel 中特定用户的对话列表