我的问题可能不清楚,如果您听不懂请提。
这是我桌子的一部分,我吃不饱
问题
获取用户的所有应用程序计数 从选择项中删除前五个应用程序,并获得剩余的计数。 在上面的输出中,计数需要过滤产品类型并获得每种产品类型的计数。 尝试过的代码
$res_applications_count = CreateApplicationModel::where('rs_users_id', $sub_user_id)
//->skip($skip)
->take($limit)
->where([
['application_status', '!=', 'Not Submitted'],
['application_status', '!=', 'InProgress']
])
->whereBetween('created', [$sub_start_date, $sub_end_date])
->where('product_type', '=', "Residential")
->orderBy('created', 'DESC')
->get()
->count();
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
看起来您正在使用Laravel框架的Eloquent ORM尝试从数据库中获取特定条件下的应用程序计数。您的需求分为几个步骤,我将逐一解释并提供相应的代码示例。
首先,您需要获取用户的所有应用程序总数,不考虑任何过滤条件。这可以通过移除所有where条件来实现:
$totalApplicationsCount = CreateApplicationModel::where('rs_users_id', $sub_user_id)
->count();
这个需求稍微复杂一些,因为Eloquent没有直接提供“跳过前N个记录”的方法(虽然您在注释掉的代码中提到了->skip($skip)
)。但您可以先获取前5个应用的ID,然后排除这些ID来获取剩余的应用。这里简化处理,直接通过SQL限制和偏移量来实现:
$remainingAppsCount = CreateApplicationModel::where('rs_users_id', $sub_user_id)
->where([
['application_status', '!=', 'Not Submitted'],
['application_status', '!=', 'InProgress']
])
->whereBetween('created', [$sub_start_date, $sub_end_date])
->orderBy('created', 'DESC')
->skip(5) // 跳过前5个
->count();
为了获取按产品类型分组的计数,您可以使用groupBy
方法。但是,请注意,当您同时使用skip
和take
时,分组可能不会按预期工作。因此,我们先获取所有满足条件的应用,然后进行分组计数:
$productTypeCounts = CreateApplicationModel::where('rs_users_id', $sub_user_id)
->whereIn('application_status', ['Submitted', 'Completed']) // 更简洁的状态筛选
->whereBetween('created', [$sub_start_date, $sub_end_date])
->get()
->groupBy('product_type')
->map(function ($group) {
return $group->count();
});
这样,$productTypeCounts
会是一个集合,键是产品类型,值是对应类型的计数。
请注意,上述代码片段基于您提供的信息进行了调整和假设,实际应用时可能需要根据您的数据库结构和具体需求进一步调整。