Rumah >rangka kerja php >Laravel >Bagaimana untuk mencapai ranking bidang tertentu dalam laravel

Bagaimana untuk mencapai ranking bidang tertentu dalam laravel

PHPz
PHPzasal
2023-04-14 17:49:391065semak imbas

Laravel, sebagai rangka kerja PHP yang popular, mempunyai skalabiliti dan fleksibiliti yang sangat berkuasa, jadi ia juga sangat mudah untuk melaksanakan fungsi penarafan bidang tertentu.

Jika kita mempunyai jadual data yang mengandungi medan yang perlu diberi kedudukan, seperti gred pelajar, maka kita boleh menggunakan Eloquent ORM yang disediakan oleh Laravel untuk melaksanakan fungsi ini.

Pertama, dalam jadual data kami, kami perlu menambah medan kedudukan tambahan untuk medan yang perlu disenaraikan. Mengambil jadual pelajar sebagai contoh, kita boleh menambah medan pangkat pada jadual pelajar. Kita boleh menggunakan migrasi untuk mencipta medan ini Kod khusus adalah seperti berikut:

php artisan make:migration add_rank_field_to_students_table --table=students

Selepas melaksanakan arahan, dalam fail migrasi yang dihasilkan, kita perlu menambah kod berikut:

public function up()
{
    Schema::table('students', function (Blueprint $table) {
        $table->unsignedInteger('rank')->nullable();
    });
}

public function down()
{
    Schema::table('students', function (Blueprint $table) {
        $table->dropColumn('rank');
    });
}

Kemudian Jalankan perintah php artisan migrate untuk menjana medan pangkat.

Seterusnya, kita perlu mentakrifkan kaedah kedudukan dalam Model Fungsi kaedah ini adalah untuk menentukan kedudukan mengikut medan Kod mungkin serupa dengan yang berikut:

public function scopeRank($query, $field)
{
    $query->orderByDesc($field);
    $query->select($field);
    $query->addSelect(DB::raw('(@rank := @rank + 1) as rank'));
    $query->from(DB::raw('(' . $query->toSql() . ') as res'));
    $query->join(DB::raw('(select @rank := 0) as init'), function () {
    });
}

Kod ini Fungsinya adalah untuk mengisih mengikut medan $field dahulu, kemudian pilih medan, tetapkan kedudukan kepada pembolehubah @rank, dan akhirnya mengembalikannya.

Akhir sekali, dalam Pengawal kami, kami boleh melaksanakan kod berikut untuk mengira kedudukan dan menetapkan hasilnya ke medan pangkat:

$students = Student::rank('score')->get();

foreach ($students as $student) {
    $student->rank = $student->pivot->rank;
    $student->save();
}

Dengan cara ini, kami boleh menggunakan Laravel dengan Pantas dan dengan mudah melaksanakan fungsi penarafan bidang tertentu. Sudah tentu, kaedah pelaksanaan bukan satu-satunya Jika anda mempunyai kaedah pelaksanaan yang lebih baik, sila tinggalkan mesej di bawah!

Atas ialah kandungan terperinci Bagaimana untuk mencapai ranking bidang tertentu dalam laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn