You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Eloquent查询:统计语言ID提交次数并返回关联数组

Laravel Eloquent 按语言ID统计提交次数

直接通过分组查询+pluck方法就能生成你需要的键值对数组:

$user_lang = Submission::query()
    ->groupBy('language')
    ->selectRaw('language, COUNT(*) as submission_count')
    ->pluck('submission_count', 'language')
    ->toArray();

代码说明:

  • groupBy('language'):按语言ID字段分组
  • selectRaw('language, COUNT(*) as submission_count'):查询语言ID和对应分组的提交次数
  • pluck('submission_count', 'language'):将语言ID设为数组键,提交次数设为对应值,返回Collection对象
  • toArray():将Collection转换为普通关联数组,最终得到['56'=>5,'45'=>7,'71'=>10]格式

如果需要仅统计指定的语言ID(比如56、45、71),可以添加whereIn过滤条件:

$targetLanguages = [56, 45, 71];

$user_lang = Submission::query()
    ->whereIn('language', $targetLanguages)
    ->groupBy('language')
    ->selectRaw('language, COUNT(*) as submission_count')
    ->pluck('submission_count', 'language')
    ->toArray();

如果要求所有指定语言ID都出现在数组中,无提交记录的显示0,可以结合array_fill_keys初始化默认值:

$targetLanguages = [56, 45, 71];
$defaultCounts = array_fill_keys($targetLanguages, 0);

$user_lang = Submission::query()
    ->whereIn('language', $targetLanguages)
    ->groupBy('language')
    ->selectRaw('language, COUNT(*) as submission_count')
    ->pluck('submission_count', 'language')
    ->toArray();

// 合并默认值,确保所有目标ID都存在
$user_lang = array_merge($defaultCounts, $user_lang);

内容的提问来源于stack exchange,提问作者Erfan Ahmed Siam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 19:30:52