我想在 laravel 查询中找到最喜欢的 10 条路线
I want to find top 10 favorite trails in laravel queries
我有两个 table,名为 'favorites' 和 'trails'。我想为用户显示前 10 条最喜欢的路线。我在他们之间建立了 'many to many' 关系。但是,我不确定如何使 query.What 应该是正确的 query.Would 有人帮助我找到正确的。没有关系,我尝试了这样的事情-
$favorites = DB::table('favorites')
->join('trails', 'trails.id', '=', 'favorites.trail_id')
->select('favorites.trail_id', 'trails.name')
->get();
下面第一个是'trails' table,另一个是'favorites' -
要获得前 10 条路线,您需要使用聚合函数计算每条路线的用户数,并根据计数结果对结果进行排序,然后 select 只有 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();
我有两个 table,名为 'favorites' 和 'trails'。我想为用户显示前 10 条最喜欢的路线。我在他们之间建立了 'many to many' 关系。但是,我不确定如何使 query.What 应该是正确的 query.Would 有人帮助我找到正确的。没有关系,我尝试了这样的事情-
$favorites = DB::table('favorites')
->join('trails', 'trails.id', '=', 'favorites.trail_id')
->select('favorites.trail_id', 'trails.name')
->get();
下面第一个是'trails' table,另一个是'favorites' -
要获得前 10 条路线,您需要使用聚合函数计算每条路线的用户数,并根据计数结果对结果进行排序,然后 select 只有 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();