Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh mendapatkan semula baris terkini untuk setiap penjual unik dalam jadual menggunakan Laravel Eloquent?

Bagaimanakah saya boleh mendapatkan semula baris terkini untuk setiap penjual unik dalam jadual menggunakan Laravel Eloquent?

Linda Hamilton
Linda Hamiltonasal
2024-10-25 14:57:02159semak imbas

How can I retrieve the latest row for each unique seller in a table using Laravel Eloquent?

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!

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