2017-09-11 16 views
0

私はなぜそれがどういうものなのか理解できないという問題があります。 が、これはコードです:1人のユーザーの総時間が各ユーザーに表示されますPHP Laravel

function getHours($project_id, $project_startDate, $project_endDate) 
{ 
    $project = Project::find($project_id); 
    $users = $project->users()->get(); 

    $start_date = $project_startDate; 
    $end_date = $project_endDate; 

    foreach ($users as $user) { 
     $timesheetHours = $user->timesheets()->whereBetween('date', [$start_date, $end_date])->get()->sum('hours'); 
    } 
    return $timesheetHours; 

} 

私は中2人のユーザーを持っており、それらの両方は、異なる時間を持っているが、それはそれらすべてに同じ時間を示しています。 timesheetHours(ofcコードは上記のようなものではない)をforeachするためにさえ、多くの方法を試しました。どこに行方不明ですか?

答えて

0

2番目のループで変数$timesheetHoursを上書きする場合、配列を使用する必要があります。ここで

foreach ($users as $user) { 
     $timesheetHours[] = $user->timesheets()->whereBetween('date', [$start_date, $end_date])->get()->sum('hours'); 
} 
return $timesheetHours; 
+0

'はhtmlspecialchars()は、パラメータ1が文字列であることを期待し、与えられた配列は、'これは来ますなぜ? – BTEK

+0

配列をループし、各項目のhtmlspecialchars()を呼び出します – delboy1978uk

+0

これはどのように行うことができますか? – BTEK

0

、あなたが最初の値を初期化する必要があり、その後、foreachのユーザーは、あなたがそれに合計を追加します。

$timesheetHours = 0; 
foreach ($users as $user) { 
     $timesheetHours += $user->timesheets()->whereBetween('date', [$start_date, $end_date])->get()->sum('hours'); 
} 
+0

はまだ1からすべて – BTEK

+0

の賃金を示していますが、それはクエリ自体で何かでなければなりません。 'timesheets() - > whereBetween( 'date'、[$ start_date、$ end_date]) - > get() '' php artisan tinker''を使って手動でforeachを使用し、正しい時間数を出力するかどうかを確認します – Sletheren

関連する問題