【问题标题】:Eloquent query - COUNT and SUM on multiple columns雄辩的查询 - 多列上的 COUNT 和 SUM
【发布时间】:2023-03-27 01:23:01
【问题描述】:

我正在尝试使用来自这个问题的知识 question already answered

在我的数据透视表中 user_attitudes 我有两列:

  • 重要性(用户正在声明他们的兴趣 (0,3))

  • 态度(基本上这个是赞成和反对的,值是'-1','0'和'1')

我现在拥有的:

我可以打印一个按 selectRaw 创建的值排序的实体列表。

我需要什么:

我希望打印下面描述的所有四个不同的值,不管哪个用于排序

我希望用 AJAX 创建几个排序开关,以便用户可以更改排序。

对于每个我需要输出最多 四个计数: 总重要性得分:

SUM(user_attitudes.importance) AS importance

显示有多少用户正在观察实体:

COUNT(user_attitudes.importance) AS observing

赞成票和反对票的总数:

SUM(user_attitudes.attitude) AS karma

对某个 iven 实体投反对票或反对票的用户数:

COUNT(user_attitudes.importance) AS 

如何扩展以下查询? 在这个查询中,我可以在哪里要求上述额外的数字?

$rank_entities = Entity::leftJoin('user_attitudes', function($q){
                $q->on('entity_id', '=', 'entities.id');
                $q->where('item_type', '=', 'entity');
            })
            ->selectRaw('entities.*, SUM(user_attitudes.importance) AS importance')
            ->groupBy('entities.id')
            ->orderBy('importance', 'desc')
            ->take(6)
            ->get(); 

我尝试添加另一个

->selectRaw('entities.*, SUM(user_attitudes.attitude) AS karma')

但似乎只有一个 selectRaw 可以创建可打印变量 有任何想法吗?谢谢。

【问题讨论】:

    标签: php mysql sql laravel eloquent


    【解决方案1】:

    只需将它们添加到当前的selectRaw?这里我使用了一个数组来让它更干净一些:

    $selects = array(
        'entities.*',
        'SUM(user_attitudes.importance) AS importance',
        'COUNT(user_attitudes.importance) AS observing',
        'SUM(user_attitudes.attitude) AS karma'
    );
    
    // query ...
    
    ->selectRaw(implode(',', $selects))
    

    【讨论】:

    • 你能帮我写这篇文章吗? https://stackoverflow.com/q/51226415/1830228 谢谢
    猜你喜欢
    • 2014-10-08
    • 2019-06-22
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 2015-07-07
    • 2018-01-26
    • 2014-04-12
    • 2021-07-23
    相关资源
    最近更新 更多