Mendapatkan semula Baris Terkini dengan Maks Created_at Menggunakan Laravel Eloquent
Dalam Laravel Eloquent, mendapatkan semula baris terkini untuk setiap medan unik boleh dicapai melalui pendekatan yang menyeluruh. Dalam jadual tertentu yang menjejaki jualan, di mana setiap entri termasuk medan seperti id, seller_id, amount dan created_at, objektifnya adalah untuk mendapatkan baris terbaharu bagi setiap seller_id yang berbeza.
Mendapatkan semula Terkini Baris untuk Penjual Tertentu
Untuk mendapatkan baris terkini untuk penjual tertentu, Laravel Eloquent menawarkan kaedah mudah:
<code class="php">$sales = Snapshot::where('seller_id', '=', 15) ->orderBy('created_at', 'DESC') ->first();</code>
Pertanyaan ini memilih semua rekod daripada jadual Syot Kilat di mana id_penjual bersamaan dengan 15, memesannya dalam tertib menurun berdasarkan created_at, dan mendapatkan semula baris pertama, dengan berkesan mengembalikan jualan terkini untuk penjual tersebut.
Mendapatkan Kembali Baris Terkini untuk Setiap Penjual
Melanjutkan pendekatan ini untuk mendapatkan semula baris terkini bagi setiap penjual individu memerlukan strategi yang lebih maju. Pertanyaan SQL berikut menyelesaikan tugas ini:
<code class="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
Dalam pertanyaan ini, subkueri s1 memilih rekod berdasarkan syarat s.created_at < s1.created_at, yang memastikan bahawa hanya rekod yang baris berikutnya mempunyai cap waktu create_at kemudian disertakan. Pertanyaan luar kemudian memilih semua baris daripada jadual utama yang tidak mempunyai baris yang sepadan dalam subkueri, dengan berkesan mengasingkan rekod terkini untuk setiap penjual_id.
Melaksanakan Pertanyaan dalam Laravel Eloquent
Untuk melaksanakan pertanyaan ini menggunakan Laravel Eloquent, kaedah pembina pertanyaan boleh digunakan:
<code class="php">DB::table('snapshot as s') ->select('s.*') ->leftJoin('snapshot as s1', function ($join) { $join->on('s.seller_id', '=', 's1.seller_id') ->whereRaw(DB::raw('s.created_at < s1.created_at')); }) ->whereNull('s1.seller_id') ->get();</code>
Pertanyaan ini mereplikasi kefungsian pertanyaan SQL dengan melakukan gabungan kiri antara jadual syot kilat dan subkueri (s1) yang mengenal pasti baris kemudian untuk setiap seller_id. Syarat whereNull menapis baris yang mempunyai baris berikutnya, hanya meninggalkan rekod terkini untuk setiap seller_id. Melaksanakan pertanyaan ini mengembalikan koleksi jualan terkini untuk setiap penjual unik dalam jadual.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mendapatkan semula baris terkini untuk setiap penjual unik dalam jadual menggunakan Laravel Eloquent?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!