Laravel Eloquent;显示最新记录

时间:2016-06-03 07:20:47

标签: php 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 13是相同的,但由于row 3具有更新的created_at时间戳,我只想看到这一点。

棘手的是我需要能够在此基础上进行分页,并且使用Laravel的Collection方法forPage是我希望避免的。

修改

如果使用相同的操作数运行搜索,我可以使用Laravel orderBy和groupBy,但我也需要考虑喜欢

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

使用groupBy()orderBy()方法。你可以尝试这样的事情:

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