Eloquent 查询 - 多列的 COUNT 和 SUM
Eloquent query - COUNT and SUM on multiple columns
我正在尝试使用从这个问题中获得的知识
question already answered
在我的支点table
user_attitudes 我有两列:
重要性(用户表示他们感兴趣 (0,3))
态度(基本上这个是给upvoting和downvoting的,值是'-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 可以创建一个 printable 变量
有任何想法吗?谢谢
只是将它们添加到当前 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))
我正在尝试使用从这个问题中获得的知识 question already answered
在我的支点table user_attitudes 我有两列:
重要性(用户表示他们感兴趣 (0,3))
态度(基本上这个是给upvoting和downvoting的,值是'-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 可以创建一个 printable 变量 有任何想法吗?谢谢
只是将它们添加到当前 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))