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