使用Laravel Eloquent 使用Max Created_at 檢索最新行
在Laravel Eloquent 中,可以透過以下方式檢索每個唯一的最新行全面的方法。在給定的追蹤銷售的表中,其中每個條目都包含 id、seller_id、amount 和created_at 等字段,目標是檢索每個不同 seller_id 的最新行。
檢索最新行特定賣家的行
要獲取特定賣家的最新行,Laravel Eloquent 提供了一種簡單的方法:
<code class="php">$sales = Snapshot::where('seller_id', '=', 15) ->orderBy('created_at', 'DESC') ->first();</code>
此查詢從Snapshot 表中選擇所有記錄,其中seller_id 等於15,根據created_at 按降序排列,並檢索第一行,有效傳回該賣家的最新銷售。
檢索每個賣家的最新行
擴展此方法以檢索每個賣家的最新行需要更高級的策略。以下 SQL 查詢完成此任務:
<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
在此查詢中,子查詢 s1 根據條件 s.created_at <🎜 選擇記錄。 s1.created_at,確保僅包含後續行具有較晚的created_at時間戳記的記錄。然後,外層查詢會從主表中選擇子查詢中沒有符合行的所有行,從而有效隔離每個 seller_id 的最新記錄。
在Laravel Eloquent 中實作查詢
要使用Laravel Eloquent 實作此查詢,可以使用查詢建構器方法:
<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>
此查詢透過在快照表和子查詢之間執行左連接來複製SQL 查詢的功能(s1) 標識每個seller_id 後面的行。 whereNull 條件過濾掉具有後續行的行,只留下每個 seller_id 的最新記錄。執行此查詢將傳回表中每個唯一賣家的最新銷售額的集合。
以上是如何使用 Laravel Eloquent 檢索表中每個唯一賣家的最新行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!