簡體   English   中英

Laravel-在where子句查詢中計算(口才)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM