«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как получить последний снимок для каждого продавца с помощью Laravel Eloquent?

Как получить последний снимок для каждого продавца с помощью Laravel Eloquent?

Опубликовано 9 ноября 2024 г.
Просматривать:589

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

Красивый запрос для выбора последних строк, сгруппированных по продавцу

При наличии таблицы, состоящей из информации, связанной с продавцом, включая временные метки созданных_at, часто бывает необходимо получить только самые последние записи для каждого продавца. Эту задачу можно эффективно решить с помощью Laravel Eloquent.

Для достижения этой цели мы можем использовать подзапрос MySQL, который идентифицирует последнюю строку для каждого идентификатора продавца, используя левое соединение и сопоставление NULL. Затем этот подзапрос можно использовать вместе с Eloquent для получения нужных данных.

В SQL запрос будет выглядеть следующим образом:

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

В переводе на Laravel Eloquent запрос будет записан следующим образом:

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();

Этот запрос извлекает последнюю строку снимка для каждого уникального идентификатора продавца с помощью подзапроса, гарантируя, что возвращаемые результаты представляют самую актуальную информацию для каждого продавца.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3