编程语言
首页 > 编程语言> > php-雄辩的查询-多个列上的COUNT和SUM

php-雄辩的查询-多个列上的COUNT和SUM

作者:互联网

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

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

>重要性(用户声明自己的兴趣(0,3))
>态度(基本上这是一个赞成和反对的态度,值是’-1′,’0’和’1′)

我现在所拥有的:

我可以打印由selectRaw创建的值排序的Entity列表.

我需要的:

我希望打印以下所述的所有四个值,无论使用哪个值进行排序

我希望使用AJAX创建多个排序开关,以便用户可以更改排序.

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

SUM(user_attitudes.importance) AS importance

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

COUNT(user_attitudes.importance) AS observing

赞成和反对的总数:

SUM(user_attitudes.attitude) AS karma

下调或赞成某实体的用户数:

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可以创建可打印的变量
有任何想法吗?谢谢.

解决方法:

只需将它们添加到当前的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))

标签:laravel,eloquent,sql,mysql,php
来源: https://codeday.me/bug/20191120/2047461.html