[英]Mysql Query in Laravel active records
在stackoverflow中進行了一點搜索之后,我想到了這個查詢,它是這樣的:
SELECT * FROM workers where TIMESTAMPDIFF(SECOND, last_activity_time, NOW()) >= (60/per_hour*60)
每個記錄都包含以下字段:
id worker_name last_activity_time per_hour
因此,每個工作人員都有一個per_hour字段,該字段將確定為每小時的操作次數。
上一次活動是工人上一次執行操作的時間。 它將獲得有資格在當前時間運行的記錄。
因此它將確定以60/per_hour
為單位的時間間隔(以秒為單位),並選擇從其last_activity_time
到現在為止經過的時間大於此計算間隔的記錄。
可以,但是我想知道兩件事。
1:此查詢是解決此問題的好方法還是速度慢?
2:如何在laravel 5.5
活動記錄或查詢生成器中執行此查詢? 並且它應該一次返回一個記錄。
提前致謝
這應該工作
\DB::table('workers')->whereRaw(...)->first();
https://laravel.com/docs/5.6/queries
1:此查詢是解決此問題的好方法還是速度慢?
這將取決於您有多少工人,您應該嘗試看看
我認為您的查詢很好,因為沒有聯接,也沒有子查詢,僅存在條件。 您可以在laravel上觸發原始查詢,以-
$workers = DB::select('SELECT * FROM workers where TIMESTAMPDIFF(SECOND, last_activity_time, NOW()) >= (60/per_hour*60)');
// or you can make use of query builder as follows
$workers = DB::table('workers')->whereRaw('TIMESTAMPDIFF(SECOND, last_activity_time, NOW()) >= (60/per_hour*60')->first();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.