Php 我想在laravel查询中找到最喜欢的10条路线

Php 我想在laravel查询中找到最喜欢的10条路线,php,mysql,laravel-query-builder,Php,Mysql,Laravel Query Builder,我有两个名为“favorites”和“trails”的表。我想为用户展示前10个最受欢迎的轨迹。我在他们之间建立了“多对多”的关系。但是,我不知道如何进行查询。什么应该是正确的查询。有人能帮我找到正确的查询吗。没有关系,我尝试过这样的事情- $favorites = DB::table('favorites') ->join('trails', 'trails.id', '=', 'favorites.trail_id')

我有两个名为“favorites”和“trails”的表。我想为用户展示前10个最受欢迎的轨迹。我在他们之间建立了“多对多”的关系。但是,我不知道如何进行查询。什么应该是正确的查询。有人能帮我找到正确的查询吗。没有关系,我尝试过这样的事情-

$favorites = DB::table('favorites')
                                  ->join('trails', 'trails.id', '=', 'favorites.trail_id')
                                  ->select('favorites.trail_id', 'trails.name')
                                  ->get();
第一个是“trails”表,另一个是下面的“favorites”-


要获得前10条线索,您需要使用聚合功能统计每条线索的用户数量,并根据统计结果排序结果,然后只选择10条

$favorites = DB::table('trails as t')
                ->select('t.id', 't.name')
                ->join('favorites as f', 't.id', '=', 'f.trail_id')
                ->groupBy('t.id')
                ->groupBy('t.name')
                ->orderByRaw('COUNT(DISTINCT f.user_id) DESC')
                ->limit(10)
                ->get();

其获取查询异常QLSTATE[42000]:语法错误或访问冲突:1055“trailboard.t.name”不在GROUP BY中(SQL:选择
t
id
t
name
作为
t
内部连接
favorites
作为
t
上的
f
id
trail\u id
t
id按计数排序(不同的f.U用户id)描述10)@Md.Raschedulhasan我已经更新了我的答案是的,名称不在group by子句中,可能是您正在运行5.7或
仅启用了\u full\u group by
模式非常感谢您,先生。我得到了预期的结果。