0

Laravelフレームワークを使用してMySQLデータベースからいくつかのデータをクエリしています。かなり長いので、クエリ全体を投稿することはしません。

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

単純なforeachループを使用して結果を反復処理し、次のようにPHPExcelを使用してレポートを生成しています。

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

ループ内では、次のように月の2つの日付の差を計算しています。

$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'));

データの損失の原因は何ですか?

4

1 に答える 1

0

MySQL TIMESTAMPDIFF関数を使用してみて、MySQLに計算を任せてください。とにかく、これはもっと効率的だと思います。

于 2013-03-06T15:48:59.450 に答える