##やりたいこと
商品テーブルとお気に入りテーブルがありまして、
商品のお気に入り数でランキングを出したいと思っています。
##現状のコード
$products = Product::leftJoin('favorites', 'products.id', '=', 'favorites.product_id') ->groupBy('products.id') ->select('products.*', DB::raw('count(favorites.id) as favorites_count')) ->whereHas('favorites’) ->orderBy('favorites_count', 'desc') ->limit(10) ->get();
##問題点
お気に入り数が一緒だった場合の同率順位が考慮ができていません。
##やりたいこと
sqlランキングで調べて
SELECT P1.name, P1.price, (SELECT COUNT(P2.price) FROM Products P2 WHERE P2.price > P1.price) + 1 AS rank FROM Products P1 ORDER BY rank;
このような参考のコードを見つけ、laravelでsqlで書きたいんですがなかなか実現できません。
どなたかご教示のほどよろしくお願いします。