我在laravel 5.2中工作,我在一个项目中,技术人员检查公司的工具,这些工具有期限,此期限是通过在验证日期中添加周期性来计算的。
餐桌工具
id |名称|子弹|周期性
TABLE INSPECTION_TOOLS
id | tool_id |检验日期
我需要所有工具都已过期 要知道截止日期,我们只需要将周期的月份添加到验证日期,然后检查是否大于今天。
我喜欢这个
我正在这样对模型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.
});
答案 0 :(得分:1)
可能的解决方案是,您可以从今天 减去“定期月份”,而不是在“检查日期”中添加“定期月份”。然后与“检查日期”进行比较
$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);
});
答案 1 :(得分:0)
您可以使用\DB::raw()
方法在字段中编写mysql语句
$query->whereHas('inspection_tool', function ($query) use ($today,$filtri) {
$query->where(\DB::raw('(inspection_tools.inspection_date + inspection_tool.periodicity)'),'<', $today);
});