Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Rekod Terkini untuk Setiap Nilai Unik dalam Laravel Eloquent?

Bagaimana untuk Mendapatkan Rekod Terkini untuk Setiap Nilai Unik dalam Laravel Eloquent?

Linda Hamilton
Lepaskan: 2024-12-01 06:34:13
asal
432 orang telah melayarinya

How to Retrieve the Most Recent Record for Each Unique Value in Laravel Eloquent?

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();
Salin selepas log masuk

Penjelasan:

  • groupBy('seller_id'): Himpunkan hasil berdasarkan Lajur "id_penjual", menyusun baris dengan ID penjual yang sepadan bersama-sama.
  • havingRaw('MAX(created_at)'): Menapis hasil untuk memasukkan hanya baris yang mempunyai nilai "created_at" maksimum dalam setiap kumpulan ID penjual.
  • orderBy('created_at', 'DESC'): Memesan keputusan dalam setiap kumpulan ID penjual dalam menurun tertib "created_at", memastikan rekod terkini muncul dahulu.
  • get(): Mengambil keputusan daripada pangkalan data.

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan