php - 如何在 CakePHP 中使用本周、本月、今年搜索数据

标签 php mysql cakephp cakephp-2.0

您好,我想使用“本周”、“本月”、“今年”从 MySql 表中搜索数据。 下面是我的 Controller 代码。 我没有获得当前 DATE_SUB(NOW(), INTERVAL 1 WEEK

的任何数据

Controller 初始代码:

 $condition = array('Order.eventid' => $id, 'Order.userid !=' => '');
            if (isset($_GET['dr']) && !empty($_GET['dr'])) {

                if ($_GET['dr'] == 2) { // This week 
                    $condition['Order.addeddate'] = 'DATE_SUB(NOW(), INTERVAL 1 WEEK)';
                }
                if ($_GET['dr'] == 3) { // This month 
                    $condition['Order.addeddate'] = 'DATE_SUB(NOW(), INTERVAL 1 MONTH)';
                }
                if ($_GET['dr'] == 4) { // This year 
                    $condition['Order.addeddate'] = 'DATE_SUB(NOW(), INTERVAL 1 YEAR)';
                }
                if ($_GET['dr'] == 5) { //  Custom date range 
                    //$condition[] = array('Order.addeddate' => 'DATE_SUB(NOW(), INTERVAL 1 MONTH)');
                }
            }
     if (isset($_GET['ot']) && !empty($_GET['ot'])) {
                if ($_GET['ot'] == 'attending') { //attending 
                    $condition['Order.orderstatus'] = '1';
                }
                if ($_GET['ot'] == 'processing') { //online_sales 
                    $condition['Order.orderstatus'] = '2';
                }
                if ($_GET['ot'] == 'manual') { //manual 
                    $condition['Order.orderstatus'] = '1';
                }
                if ($_GET['ot'] == 'refunded') { //refunded 
                    $condition['Order.orderstatus'] = '1';
                }
            }
    $this->paginate = array(
                'conditions' => $condition
            );

enter image description here

最佳答案

您可以使用 StartDateEndDate 轻松完成。像这样添加条件

'conditions' => array('date(YourModel.addeddate) BETWEEN ? AND ?' => array($sdate,$edate)

现在的问题是如何获得这个月 这个星期 这个年。您可以使用下面的代码。

你可以使用cakephp TimeHelper

通过使用 cakephp TimeHelper

获取本周

$sdate = $this->Time->format('y-m-d','last saturday');
$edate = $this->Time->format('y-m-d',time()); 

获取这个月

$sdate = $this->Time->format('y-m-01',time());
$edate = $this->Time->format('y-m-d',time());  

获取今年

$sdate = $this->Time->format('y-01-01',time());
$edate = $this->Time->format('y-m-d',time()); 

详情TimeHelper Doc

没有TimeHelper

获取本周

$sdate = date('y-m-d', strtotime("last saturday"));
$edate = date("y-m-d"); 

获取这个月

$sdate = date('y-m-01');
$edate = date("y-m-d"); 

获取今年

$sdate = date('y-01-01');
$edate = date("y-m-d"); 

现在如果你想得到最近 7 天或最近 30 天,你可以使用 strtotime

获取过去 7 天

$sdate = date('Y-m-d', strtotime("-1 weeks"));
$edate = date("y-m-d"); 

获取过去 30 天

$sdate = date('Y-m-d', strtotime("-30 days"));
$edate = date("y-m-d");

获取过去1年

$sdate = date('Y-m-d', strtotime("-1 year"));
$edate = date("y-m-d");

我想现在你可以轻松解决你的问题了。

关于php - 如何在 CakePHP 中使用本周、本月、今年搜索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33207229/

相关文章:

php - 性能问题sql

php - 加盐密码安全

mysql - 如何创建具有多值的实体?

CakePHP 保存多行

php - 关闭 cakePHP 中的通知

php - 两个 <ul> 函数一起工作还是合二为一?

php - MySQL PHP : Extra Rows

javascript - 比较一个时区的日期与另一时区的日期

mysql - 在 ASP.NET MVC 3 中使用 MySQL 数据库的 Linq,将 DateTime 存储到变量中

php - 在 CakePHP 的无模型表单中找不到 ContactForm 类