【问题标题】:Object value mysteriously changed对象值神秘地改变了
【发布时间】:2013-02-20 13:07:27
【问题描述】:

我正在使用 Laravel 框架从 MySQL 数据库中查询一些数据。我不会发布整个查询,因为它很长。

$logs = DB::query('SELECT ... FROM .. JOIN ... WHERE .. GROUP BY .. ORDER BY');

我正在使用简单的 foreach 循环遍历结果并使用 PHPExcel 生成报告,如下所示:

foreach($logs as $log):
 ...
endforeach;

在循环内部,我正在计算月份中两个日期之间的差异,如下所示:

$cntr_startdate = new DateTime($log->start_date);
$cntr_enddate = new DateTime($log->end_date);                   
$conterm = $cntr_enddate->diff($cntr_startdate);
$cterm = (($conterm->format('%y') * 12) + $conterm->format('%m'));

在下一行之后,$log 对象中的 rate 字段以某种方式损坏并返回像 b、X 和 O.5 这样的垃圾(其余字段未触及)。

$cterm = (($conterm->format('%y') * 12) + $conterm->format('%m'));

什么可能导致数据丢失?

【问题讨论】:

  • 如果去掉使用PHPExcel生成报表的行,还会出现这种丢失吗?我的猜测是 PHPExcel 正在弄乱您计算机的 RAM。
  • 我试过了。 PHPExcel 不影响它。

标签: php laravel


【解决方案1】:

尝试使用 MySQL TIMESTAMPDIFF 函数,让 MySQL 为您进行计算。无论如何,我认为这样会更有效率。

【讨论】:

  • 谢谢伙计,TIMESTAMPDIFF 效果很好。尽管 PHP datediff 的问题仍然很深。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-29
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
相关资源
最近更新 更多