首页 > 解决方案 > Laravel Eloquent limit() 和 count() 返回完整计数

问题描述

我需要对count()最新的 1000 条记录使用该方法。

例如,我们有 3 个用户:

现在我想只考虑最近的 1000 条记录进行计算,这意味着用户 A 和 C 将使用他们的所有记录,因为 < 1000,但用户 B 只使用他最近的 1000 条记录,而忽略了 19k。

// This should return for User A and C, 900 and 10, but for User C 1000
$recent_activities = Activity::select('id', 'user_id', 'activity')->where('user_id', $user->id)
->latest('id')->limit(1000)->count();



// The next 3 queries should analyse the recent 1000 records for occurences of certain %like% records and count them
$result_chat_refunds = Activity::where('activity', 'like', 'Credits erstattet%')->where('user_id', $user->id)
->latest('id')->limit(1000)->count();

$result_credit_membership = Activity::where('activity', 'like', '%Membership gutgeschrieben%')->where('user_id', $user->id)
->latest('id')->limit(1000)->count();

$result_credit_credits = Activity::where('activity', 'like', '%Credits gutgeschrieben%')->where('user_id', $user->id)
->latest('id')->limit(1000)->count();

我怎样才能做到这一点?

标签: sqleloquent

解决方案


也许对此进行修改:

 SELECT TOP 1000 X, 
        COUNT(X) OVER() AS Y
 FROM TblZ
 WHERE Criteria ='Whatever'
 ORDER BY ID DESC

IDK我没有测试这个所以不要开枪。


推荐阅读