2013-03-05 2 views
0

Я запрашиваю некоторые данные из базы данных MySQL, используя структуру Laravel. Я не буду публиковать весь запрос, поскольку он довольно длинный.Значение объекта таинственно изменено

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

Я переборе результатов с помощью простого цикла Еогеасп и создания отчета с помощью 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')); 

После следующей строки, поле скорости в объекте $ лог каким-то образом поврежден и возвращает мусор, как B, X, и O.5 (остальные поля не трогают).

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

Что может быть причиной потери данных?

+0

Если вы удаляете строки, которые используют PHPExcel для генерации отчета, сохраняется ли эта потеря? Я предполагаю, что PHPExcel возится с оперативной памятью вашего компьютера. – vcampitelli

+0

Я пробовал это. PHPExcel не влияет на него. – Sergiu

ответ

0

Попробуйте использовать функцию MySQL TIMESTAMPDIFF и пусть MySQL выполнит расчет для вас. В любом случае, это будет более эффективно.

+0

Спасибо, человек, TIMESTAMPDIFF отлично работает. Хотя проблема с PHP fariff по-прежнему остается темной. – Sergiu

Смежные вопросы