人気ランキングサイトを作成しています。(バージョンLaravel 6.x)
参考サイトを参考に、
FighterController <?php namespace App\Http\Controllers; use Illuminate\Http\Request; //Fighterモデルをインポート use App\Fighter; //Likeモデルをインポート use App\Like; (省略) // DBをインポート use DB; class FighterController extends Controller { //トップページ public function index() { // $fighters = Fighter::withCount('likes') // // いいねの多い順に並び替え // ->orderBy('likes_count', 'desc') // ->get(); return view('fighters.index',[ 'title' => '格闘家人気ランキング', 'fighters' => $fighters, ]); }
で、いいねの数が多い順に表示させることができました。
しかし、順位をつけようとしましたが、やり方が分かりませんでした。
連番をつけるという方法をしましたが、何か違うような。。。
どのようにして、一つ一つに順位を付けることができるのでしょうか。
各テーブル↓↓
usersテーブル public function up() { Schema::create('users', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); } likesテーブル public function up() { Schema::create('likes', function (Blueprint $table) { $table->bigIncrements('id'); $table->unsignedBigInteger('user_id'); $table->unsignedBigInteger('fighter_id'); $table->timestamps(); $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); $table->foreign('fighter_id')->references('id')->on('fighters')->onDelete('cascade'); }); } fightersテーブル public function up() { Schema::create('fighters', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('fighter_name',100); $table->string('image',100); // 写真の引用元 $table->string('image_quote',100); //SNSのアカウントリンク $table->string('account',100); $table->timestamps(); }); }
回答1件