"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como obter o instantâneo mais recente de cada vendedor usando o Laravel Eloquent?

Como obter o instantâneo mais recente de cada vendedor usando o Laravel Eloquent?

Publicado em 2024-11-09
Navegar:546

How to Fetch the Latest Snapshot for Each Seller Using Laravel Eloquent?

Consulta eloquente para seleção de linhas mais recentes agrupadas por vendedor

Dada uma tabela que consiste em informações relacionadas ao vendedor, incluindo carimbos de data/horacreated_at, muitas vezes é necessário recupere apenas as entradas mais recentes de cada vendedor. Esta tarefa pode ser realizada de forma eficaz usando Laravel Eloquent.

Para conseguir isso, podemos empregar uma subconsulta MySQL que identifica a linha mais recente para cada seller_id usando uma junção esquerda e correspondência NULL. Esta subconsulta pode então ser usada em conjunto com o Eloquent para recuperar os dados desejados.

No SQL, a consulta ficaria assim:

select s.*
from snapshot s
left join snapshot s1 on s.seller_id = s1.seller_id
and s.created_at 

Traduzido para Laravel Eloquent, a consulta seria escrita da seguinte forma:

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 whereNull('s1.seller_id')
  ->get();

Esta consulta recupera a linha de instantâneo mais recente para cada seller_id exclusivo usando a subconsulta, garantindo que os resultados retornados representem as informações mais atualizadas para cada vendedor.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3