[英]Laravel - calculate in where clauses query (Eloquent)
我在laravel 5.2中工作,我在一個項目中,技術人員檢查公司的工具,這些工具有期限,該期限是通過將周期性添加到驗證日期來計算的。
餐桌工具
id | 名稱| 子彈| 周期性
表格INSPECTION_TOOLS
ID | tool_id | 檢驗日期
我需要使所有工具都過期要知道截止日期,我們只需要將周期的月份添加到驗證日期,並檢查是否大於今天。
我像TRYNG這樣
我在模型Tool.php上執行過濾查詢,如下所示:
// Get date today
$today = \Carbon\Carbon::today();
$query->whereHas('inspection_tool', function ($query) use ($today,$filtri) {
// Here i need add periodicity months to 'inspection_tools.inspection_date', but i don't know if we can do calculate inside query clauses.
$query->where(('inspection_tools.inspection_date')->addMonths('tool.periodicity'),'<', $today);
// I'm tryng like this but it doesn't work.
});
可能的解決方法是,您可以從今天開始 減去 “定期月份”,而不是在“檢查日期”中添加“定期月份”。 然后與“檢查日期”進行比較
$query->whereHas('inspection_tool', function($query) use ($today, $filtry) {
// substract 'periodicity months' from 'today'
$verification_date = $today->subMonths('tool.periodicity');
$query->where('inspection_tools.inspection_date' , '<', $verification_date);
});
您可以使用\\DB::raw()
方法在字段中編寫mysql語句
$query->whereHas('inspection_tool', function ($query) use ($today,$filtri) {
$query->where(\DB::raw('(inspection_tools.inspection_date + inspection_tool.periodicity)'),'<', $today);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.