1

我正在尝试在行结果中使用 avg 和 count 执行查询,如下所示:

SELECT r.id, avg( p.puntuacio ), count(p.puntuacio)
FROM receptes AS r, puntuacio_receptes_usuaris AS p
WHERE r.id = p.recepta_id
GROUP BY r.id

但我不知道我可以在 Laravel 上做什么,因为在 Eloquent 中不能在结果行中写入 avg 或 count 。

非常感谢

4

2 回答 2

5

查询生成器(Fluent)方法:

DB::table(DB::raw('receptes as r, puntuacio_receptes_usuaris as p'))
        ->select(array('r.id', DB::raw('avg( p.puntuacio ) as avg_p'), DB::raw('count(p.puntuacio) as count_p')))
        ->where('r.id', DB::raw('p.recepta_id'))
        ->groupBy('r.id')
        ->get();

这应该没有任何问题,但如果你想用你的 Eloquent 模型来做,我建议使用JOIN而不是在FROM.

您可以通过访问avg_p和访问 avg 和 count 结果count_p

注意

于 2013-05-17T09:00:29.523 回答
1

DB::raw()如果您需要使用 Eloquent 会转义的东西,您可以使用它来创建原始表达式。

有关一些示例,请参阅有关原始表达式的文档。

于 2013-05-17T02:29:44.243 回答