簡體   English   中英

Laravel活動記錄中的MySQL查詢

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

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