首页 > 解决方案 > 如何通过分组来计算价值

问题描述

我是 Laravel 的新手,我需要通过分组来计算价值,例如这些值

male male male female female

我需要计算列中有多少个1,我希望结果是男性:3,女性:2

我已经尝试过这种方法,但它没有按预期工作

Patient::select('gendar')->groupBy('gendar')->count()

标签: phpmysqlsqllaraveleloquent

解决方案


有几种方法可以做你想做的事,但最后,你需要添加一个自定义选择来计算分组值。为此,Laravel 提供了 aselectRawDB::raw('...')helper。

您的一些选项例如:

$patients = Patient::select('gendar', DB::raw('count(gendar) as count'))
    ->groupBy('gendar')
    ->get()

或者

$patients = Patient::select('gendar')
    ->addSelect(DB::raw('count(gendar) as count'))
    ->groupBy('gendar')
    ->get()

甚至

$patients = Patient::selectRaw('gendar, count(gendar) as count')
    ->groupBy('gendar')
    ->get()

你可以在官方文档中阅读更多关于 Laravel 的原始方法:https ://laravel.com/docs/8.x/queries#raw-methods


推荐阅读