Mencari Rekod Terkini dengan Laravel Eloquent
Untuk mendapatkan semula rekod terkini bagi setiap nilai unik dalam lajur jadual tertentu, ORM Eloquent Laravel memberikan penyelesaian yang mantap. Mari kita lihat senario dan penyelesaiannya yang fasih:
Senario:
Pertimbangkan jadual bernama "snapshot" dengan lajur seperti "id", "seller_id", " jumlah", dan "dicipta_di". Matlamatnya ialah untuk mendapatkan semula baris terbaharu bagi setiap "id_penjual" yang berbeza.
Pertanyaan Fasih:
$latestSales = Snapshot::select('seller_id') ->groupBy('seller_id') ->havingRaw('MAX(created_at)') ->orderBy('created_at', 'DESC') ->get();
Penjelasan:
Pertanyaan Ganti (Pertanyaan Mentah):
Jika lebih suka, pertanyaan SQL mentah boleh digunakan untuk mencapai perkara yang sama hasil:
SELECT * FROM snapshot WHERE (seller_id, created_at) IN ( SELECT seller_id, MAX(created_at) AS max_created_at FROM snapshot GROUP BY seller_id ) ORDER BY created_at DESC;
Pertanyaan ini mengenal pasti baris terkini untuk setiap "id_penjual" menggunakan subkueri untuk menentukan nilai "created_at" maksimum dalam setiap kumpulan. Baris dengan pasangan padanan "id_penjual" dan "dicipta_di" (mewakili rekod terkini) kemudian dipilih dan dipesan oleh "dicipta_di" dalam tertib menurun, menghasilkan senarai rekod terbaharu untuk setiap penjual.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod Terkini untuk Setiap Nilai Unik dalam Laravel Eloquent?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!