使用layui的laydate组件+Tp5 实现根据创建的起始时间进行搜索

13 篇文章 1 订阅

 最终效果,点击搜索后,前端页面显示符合这个时间区间的数据。

 

 

这里讲一下大概思路: 

1,前端使用layui.date 组件。

<div class="layui-inline">
    <label class="layui-form-label">创建时间</label>
    <div class="layui-input-inline">
        <input type="text" class="layui-input" id="test-laydate-range-date-1" name="created_at" placeholder="请输入创建起始时间">
    </div>
</div>

<div class="layui-inline">
    <label class="layui-form-label">完成时间</label>
      <div class="layui-input-inline">
        <input type="text" class="layui-input" id="test-laydate-range-date-2" name="updated_at" placeholder="请输入完成起始时间">
      </div>
</div>
//日期范围
laydate.render({
      elem: '#test-laydate-range-date-1'
      ,type: 'datetime'
      ,format:'yyyy-MM-dd HH:mm:ss'
      ,range: true
});

//日期范围
laydate.render({
     elem: '#test-laydate-range-date-2'
     ,type: 'datetime'
     ,format:'yyyy-MM-dd HH:mm:ss'
     ,range: true
});

 

2,在使用时间范围组件后,点击搜索,会生成 “2019-06-01 00:00:00 - 2019-06-30 00:00:00“这种格式的数据,当然这样的数据格式不是我们想要的。我最终想要拼成的SQL语句是:

"SELECT * FROM `order` WHERE  `created_at` BETWEEN '2019-06-20 00:00:00' AND '2019-08-05 00:00:00';“
这时,就必须在后端对数据进行处理了。

处理方式如下: 

$created_at=$request->param('created_at');
$created_at[20]=',';
$created_at=explode(',', $created_at);  //这个变量的打印结果:['2019-06-01 00:00:00','2019-06-30 00:00:00']; 
if (isset($created_at) && is_array($created_at)){
    $arr[]=['created_at','between',$created_at];
}
$list=OrderModel::where($arr)->select(); //此时查看日志生成的SQL是
“SELECT * FROM `order` WHERE  `created_at` BETWEEN '2019-06-20 00:00:00' AND '2019-08-05 00:00:00';”没毛病。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值