php - YII如何获取Last month两个日期之间的数据?

标签 php mysql yii

我想获取上个月的数据,我正在使用以下代码来执行此操作,但它对我来说无法正常工作:

这是我的代码:

public function getLastMonth($user_id)
{       
    $criteria=new CDbCriteria;

    $criteria->condition = 'leave_from_date >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)';
    $criteria->condition = 'leave_to_date <= DATE_SUB(CURDATE(), INTERVAL 1 DAY)';
    $criteria->condition = "user_id = $user_id";
    $data = Leaves::model()->findAll($criteria);
    $lastMonthR = 0;
    foreach($data as $lastMonth)
     {
         $lastMonthR += $lastMonth->total_leaves_hours;
     }      
    //return lastMonthR CHtml::encode($lastMonthR);
    return $lastMonthR;
}

我想得到等同于 MYSQL 中以下查询结果的结果:

SELECT *,sum(total_leaves_hours) FROM tbl_leaves
WHERE leave_from_date >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH) AND 
leave_to_date <= DATE_SUB(CURDATE(), INTERVAL 1 DAY) ;

当我运行 YII 的代码(如上所示)时,它显示了表格的所有数据,请帮助我,我是 YII 的新手。提前致谢。

最佳答案

当您第二次为 condition 赋值时,您会覆盖第一个条件。将两者合并为一个条件。您还应该使用准备好的语句而不是字符串插值:

$criteria->condition = 'leave_from_date >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
      AND leave_to_date <= DATE_SUB(CURDATE(), INTERVAL 1 DAY
      AND user_id = :id';

$data = Leaves::model()->findAll($criteria, array (':id'=>$user_id));

关于php - YII如何获取Last month两个日期之间的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18009766/

相关文章:

php - 如何处理海量数据集并提供实时用户体验

PHP yield 与 PDO 获取?

mysql - 生成带连接的mysql erd

php - 跟踪 PHP "out of memory"错误

file-upload - Yii框架,上传文件不起作用

c# - 编程语言在运算符优先级上的区别?

php - 将日期转换为荷兰语格式

mysql - 外键的 `Constraint Symbol` 和 `index_name` 之间的区别

php - 如果事务发生错误,对表的id索引有影响吗?

php - mysqli_real_escape_string 与 filter_input()?我应该使用什么方法?