2016-06-01 6 views
1

Laravel 5.1で修正できない問題がありました。Laravel 5.1のゼロ除算5.1

だから私はこのコードではエラーとして「Division by zero」を持っている:

public static function GetAvgVisits() 
    { 
     $average_visits = DB::table('tracker_sessions')->where('is_robot', '=', 0) 
         ->whereRaw("created_at between '".Carbon::now()->startOfMonth()."' and '".Carbon::now()->endOfMonth()."'") 
         ->count(DB::raw('DISTINCT client_ip'))/(int)Carbon::now()->diff(Carbon::now()->startOfMonth())->format('%a') + 1; 

     return round($average_visits); 
    } 

そして私はちょうど、正しい解決策を見つけることができません。誰かが私を助けることができますか?

+0

DB 'のダンプ::テーブルを( 'tracker_sessions')行ってください - >( 'is_robot'、 '='、0) - > whereRaw(.Carbon ::今 "のcreated_at「間"( (DB :: raw( 'DISTINCT client_ip')) ' –

+0

int(0); - > startOfMonth()。 ''および '" .Carbon :: now() - > endOfMonth()。 "'") )は私が得るものです – Robin

+0

今日は今月の初めなので、1-1 = 0です。 ((int)Carbon :: now() - > diff(Carbon :: now() - > startOfMonth()) - > format( '%a')+1) – Rick

答えて

2

+ 1はその前及び/ 1 +の後に括弧を追加し、ゼロ除算を防止するために存在するので、もし分割は、+ 1に先行:

public static function GetAvgVisits() 
    { 
     $average_visits = DB::table('tracker_sessions')->where('is_robot', '=', 0) 
         ->whereRaw("created_at between '".Carbon::now()->startOfMonth()."' and '".Carbon::now()->endOfMonth()."'") 
         ->count(DB::raw('DISTINCT client_ip'))/((int)Carbon::now()->diff(Carbon::now()->startOfMonth())->format('%a') + 1); 

     return round($average_visits); 
    } 

見て少し難しいが、私は持っています追加これら:

/(INT)カーボン::今() - >差分(カーボン::今() - > startOfMonth()) - >フォーマット( '%のA')+ 1 ;

+0

Worked!ありがとう! – Robin