Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh mendapatkan baris rawak daripada jadual pangkalan data dalam Laravel?

Bagaimanakah saya boleh mendapatkan baris rawak daripada jadual pangkalan data dalam Laravel?

Barbara Streisand
Barbara Streisandasal
2024-11-21 16:14:10384semak imbas

How do I get random rows from a database table in Laravel?

Mendapatkan Baris Rawak dalam Laravel

Untuk mendapatkan semula baris rawak daripada jadual pangkalan data menggunakan Laravel's Eloquent ORM atau Fluent query builder, terdapat beberapa pendekatan tersedia, bergantung pada versi Laravel anda menggunakan.

Laravel 5.2 dan Kemudian

Dalam Laravel 5.2 dan versi yang lebih baru, anda boleh menggunakan kaedah inRandomOrder():

$randomUser = User::inRandomOrder()->first();
$randomUsers = User::inRandomOrder()->take(5)->get();

Laravel 5.1 dan Sebelum

Sebelum Laravel 5.2, anda akan menggunakan sintaks SQL mentah untuk mencapai rawak:

$randomUser = User::orderByRaw("RAND()")->first();
$randomUsers = User::orderByRaw("RAND()")->take(5)->get();

Laravel 3

Dalam Laravel 3, gunakan kaedah order_by() dengan DB::raw() fungsi:

$randomUser = User::order_by(DB::raw("RAND()"))->first();
$randomUsers = User::order_by(DB::raw("RAND()"))->take(5)->get();

Menggunakan Koleksi

Sebagai alternatif, anda boleh menggunakan kaedah rawak() atau rawak($count) Koleksi untuk mendapatkan elemen atau tatasusunan rawak unsur rawak:

$randomUser = User::all()->random();
$randomUsers = User::all()->random(10);

Pertimbangan

Dalam SQL, ORDER BY RAND() boleh menjadi tidak cekap untuk jadual besar, kerana ia memerlukan enjin pangkalan data untuk mengisih semua rekod. Untuk prestasi yang lebih baik, pertimbangkan untuk menggunakan pendekatan alternatif seperti pensampelan atau pengindeksan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mendapatkan baris rawak daripada jadual pangkalan data 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