2016-06-03 7 views
2

Я создаю систему отчетности, в которую я ежедневно импортирую кучу файлов в свою базу данных. Возникла проблема: у меня могут быть дубликаты, но действительные записи в моей базе данных.Laravel Eloquent; Показать последнюю запись

В моей базе данных У меня был бы следующий, пример, набор данных.

ID  NAME   MATERIAL  PRICE  CREATED_AT 
1   Foo   FP1234  3.45   2016-01-01 15:00:00 
2   Bar   FP8177  7.21   2016-01-01 15:00:00 
3   Foo   FP1234  4.87   2016-01-02 15:00:00 
4   Baz   FP1231  3.00   2016-01-02 15:00:00 

Я хотел бы знать, как я могу вернуть выше результирующий набор, но исключает row 1потому это то же самое, как row 3 и row 3 более свежо. Добавляя к моим аргументам, row 1 и 3 те же, но так как row 3 имеет более позднюю отметку created_at, я бы хотел только увидеть это.

Сложная вещь: мне нужно иметь возможность разбивать на нее сверху, а использование метода Laravel Collection forPage - это то, чего я надеялся избежать.

Редактировать

я могу использовать Laravel OrderBy и GroupBy при выполнении поиска с равным слишком операндом, однако мне нужно учитывать как, а также.

ответ

2

Вы можете попробовать любой из них ..

// For getting result with laravel collection. 
YourModel::orderBy('CREATED_AT', 'desc')->groupBy('NAME')->get(); 

// For getting result without laravel collection. 
YourModel::orderBy('CREATED_AT', 'desc')->groupBy('NAME')->get()->toArray(); 

// For getting result with laravel pagination. 
YourModel::orderBy('CREATED_AT', 'desc')->groupBy('NAME')->paginate(5); 
2

Использование groupBy() и orderBy() методов. Вы можете попробовать что-то вроде этого:

Model::orderBy('created_at', 'desc')->groupBy('name')->get() 
+0

Вы Опечатка grouBy ('имя') –

+0

Fixed, спасибо. –

Смежные вопросы