Mysql 在 Laravel 个活动记录中查询
Mysql Query in Laravel active records
在 Whosebug 中进行了一些搜索后,我想到了我想要的查询,它是这样的:
SELECT * FROM workers where TIMESTAMPDIFF(SECOND, last_activity_time, NOW()) >= (60/per_hour*60)
每条记录由以下字段组成:
id worker_name last_activity_time per_hour
所以每个工人都有一个 per_hour 字段,该字段将确定为每小时的操作数。
last activity 是工作人员最后一次执行操作的时间。
它将获取当前符合 运行 条件的记录。
因此它将确定 60/per_hour
的时间间隔(以秒为单位),并选择从 last_activity_time
到现在经过的时间超过此计算间隔的记录。
这没问题,但我想知道两件事。
1:这个查询是解决这个问题的好方法还是它很慢?
2:如何在 laravel 5.5
活动记录或查询生成器中执行此查询?而且它应该 return 一次一条记录。
提前致谢
这应该有效
\DB::table('workers')->whereRaw(...)->first();
https://laravel.com/docs/5.6/queries
1: is this query a good approach for this problem or its slow?
这取决于你有多少工人,你应该试试看
我认为您的查询很好,因为没有连接,也没有子查询,只是条件存在。您可以在 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();
在 Whosebug 中进行了一些搜索后,我想到了我想要的查询,它是这样的:
SELECT * FROM workers where TIMESTAMPDIFF(SECOND, last_activity_time, NOW()) >= (60/per_hour*60)
每条记录由以下字段组成:
id worker_name last_activity_time per_hour
所以每个工人都有一个 per_hour 字段,该字段将确定为每小时的操作数。
last activity 是工作人员最后一次执行操作的时间。 它将获取当前符合 运行 条件的记录。
因此它将确定 60/per_hour
的时间间隔(以秒为单位),并选择从 last_activity_time
到现在经过的时间超过此计算间隔的记录。
这没问题,但我想知道两件事。
1:这个查询是解决这个问题的好方法还是它很慢?
2:如何在 laravel 5.5
活动记录或查询生成器中执行此查询?而且它应该 return 一次一条记录。
提前致谢
这应该有效
\DB::table('workers')->whereRaw(...)->first();
https://laravel.com/docs/5.6/queries
1: is this query a good approach for this problem or its slow?
这取决于你有多少工人,你应该试试看
我认为您的查询很好,因为没有连接,也没有子查询,只是条件存在。您可以在 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();