php - Eloquent 查询 - 多列上的 COUNT 和 SUM

标签 php mysql sql laravel eloquent

我正在尝试使用从这个问题中获得的知识 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 可以创建可打印变量 有任何想法吗?谢谢。

最佳答案

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

关于php - Eloquent 查询 - 多列上的 COUNT 和 SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27730806/

相关文章:

MySQl 创建自连接

php - 使用数组选择mysql中的行

php - 我网站其他部分的 WordPress

mysql - 如何在MySQL自然全外连接中使用别名?

mysql - SQL IF 和 LEFT JOIN 导致数据库出现故障

java - 从 TypedQuery 中查找 native SQL 查询

php - 有没有办法通过 CSS 类标题编辑 CSS 变量?

php - cakephp3 session 已弃用

php - 融合图表中一个网页中的多个图表

php - 没有模型 [App\Products] Laravel 的查询结果