2017-06-12 3 views
1

データベース内の各クライアントモデルの予定モデル時間の要約を取得しようとしています。私は合計がクライアントによって合計されていることを確認したい。私のコードは現在、個々のアポイントメントのためにすべての時間を合計し、それを返すので、私はどこかで間違っています。私はそれがクライアントによって合計されていることを確認したい。コードは次のとおりです。Laravelのクエリでキーの長さを合計するにはどうすればよいですか?

 $clientHours = Appointment::with('client') 
     ->whereBetween('ends_at', [$from, $to]) 
     ->get();    

     $results= [];   
     foreach($clientHours as $collection) 
     { 
     $duration = [];  
       $date1  = $collection->starts_at; 
       $date2  = $collection->ends_at;      
       $start  = Carbon::parse($date1); 
       $end  = Carbon::parse($date2); 
       $length  = $start->diffInMinutes($end)/60; 
       $duration[] = $length; 
       $totalHours = array_sum($duration); 


      $results [] = [ 
      'name'   => $collection->client->name 
      'totalHours' => $totalHours, 
      'charge'  => $collection->client->contract_rate * $totalHours, 
      ]; 
     } 


     return view('admin') 

答えて

0

get()コールの後に、コレクションでsum()メソッドを使用できます。

+0

$ date1と$ date2の違いをクライアントでSUMする必要があります。これらは複数の場合がありますので、foreachループでそれらを必要とします。 –

+0

その場合、pipe()またはmap()にget()を連鎖し、各反復の差を合計します。 – btl

関連する問題