我無法接收在兩個日期之間插入的所有數據。例如開始日期:2017-01-15 - 2018-05-15:結束日期。如何在PHP Laravel的兩個日期之間從db獲取所有數據?
我想是誰在那段時間工作了一個具體項目的人都工資,我的代碼是這樣的,到目前爲止:
$project = Project::find($project_id);
$projectStartDate = $project->start_date;
$projectEndDate = $project->end_date;
$usersOfProject = $project->users()->get();
foreach ($usersOfProject as $userOfProject){
$ids = $userOfProject->id;
$userWages = UserWage::where('user_id',$ids)->where('start_date','<=', $projectStartDate)->where('end_date','>=',$projectEndDate)->get();
foreach ($userWages as $userWage){
$wage= wage + $userWage->value;
return $wage;
}
}
當我dd($ids);
,僅顯示1中的工作用戶對於這個項目,不是全部。 (目前有兩個工作)。
fillables爲UserWages是這些:
protected $fillable = [
'value', 'currency', 'user_id', 'start_date', 'end_date',
];
,項目:
protected $fillable = [
'name', 'description', 'start_date', 'end_date', 'value', 'client_id','currency','',
];
,用戶:
protected $fillable = [
'email', 'password', 'first_name', 'last_name', 'status_id','mobile', 'role',
];
所有這一切的目的是,我試圖讓在項目開始和項目結束期間爲該項目工作的每個用戶的工資。 工資可能會逐月改變,所以他們的匯率(付款可以美元,歐元或阿爾巴尼亞列克);
我正在嘗試獲取屬於該項目的用戶的所有工資,並計算他們可能擁有的每項工資的數據。以當月的匯率計算,匯率可由管理員填寫。匯率
代碼是這樣的:
function exchangeRate($value, $currency){
$getCurrency = Exchange::whereDate('date','2017-11-30'); //This is just for test to calculate wages with exchange rate of november 30, will do with carbon to get last date of month.
$dollar = $getCurrency->dollar_lek;
$euro = $getCurrency->euro_lek;
if ($currency == 'ALL') {
$value = $value;
} elseif ($currency == 'USD') {
$value = $value * $dollar;
} else {
$value = $value * $euro;
}
}
fillables匯率是
protected $fillable =[
'euro_lek', 'dollar_lek', 'date',
];
爲什麼你必須在返回第二個foreach循環?它只會返回一條記錄。查詢是可以的。你必須詳細說明你的問題。 –
@forexknight嘿,我更新了這個問題,你能再次檢查嗎? – BTEK
當你執行'dd($ ids)'時,循環在第一次迭代時暫停。這就是爲什麼它只顯示一個用戶。改用'dump($ ids)'。 – Gayan