Laravel Fasih: Memilih Semua Baris Terkini untuk Setiap penjual_id
Pertimbangkan jadual yang mengandungi transaksi rekod:
Objektifnya adalah untuk mendapatkan semula transaksi terkini untuk setiap seller_id unik. Walaupun mudah untuk mendapatkan transaksi terbaharu untuk penjual tertentu, cabarannya terletak pada mengekstrak rekod terkini untuk semua penjual.
Pendekatan Pertanyaan Pangkalan Data:
Satu yang cekap kaedahnya ialah menggunakan pertanyaan SQL:
select s.* from snapshot s left join snapshot s1 on s.seller_id = s1.seller_id and s.created_at < s1.created_at where s1.seller_id is null
Pertanyaan ini mengenal pasti transaksi terkini untuk setiap id_penjual dengan menggunakan penyertaan sendiri dan mengecualikan rekod dengan yang dibuat kemudian pada masanya.
Pendekatan Pembina Pertanyaan Laravel:
Untuk mencapai hasil yang sama menggunakan Pembina Pertanyaan Laravel :
DB::table('snapshot as s') ->select('s.*') ->leftJoin('snapshot as s1', function ($join) { $join->on('s.seller_id', '=', 's1.seller_id') ->whereRaw('s.created_at < s1.created_at'); }) ->whereNull('s1.seller_id') ->get();
Kod ini menggunakan teknik sambung sendiri yang serupa seperti SQL pertanyaan, mengembalikan transaksi terkini untuk setiap seller_id.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Transaksi Terkini dengan Cekap untuk Setiap Penjual Menggunakan Laravel Eloquent?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!