使用Laravel按日期获取最新记录的2种方法

441 阅读1分钟

Laravel有几种方法来询问它所链接的数据库。在本教程中, 我们将探讨从任何指定的表中提取最新记录(按日期时间)的2种方法。无论你喜欢使用Eloquent还是原始SQL,本文都将回答这两种使用情况。

方法一

方法一使用Eloquent并利用两个重要的操作符来拉出最新记录,sortByDesctakesortByDesc 方法将把一个日期时间戳作为它的指定列,在这个例子中,是creative_at列。在这之后,我们使用take() 操作符指示了一个1的限制,这意味着它将从集合中拉出第一条记录。

脚本

$lastRecordDate = Product::all()->sortByDesc('created_at')->take(1)->toArray();

dd($lastRecordDate);

// OR

$lastRecordDate = Product::all()->sortByDesc('YOUR_COLUMN_NAME')->take(1)->toArray();

dd($lastRecordDate);

输出

last record from table eloquent laravel

方法二

下一个方法是利用一个原始的SQL查询,其方式与方法一基本相同。我们将再次使用排序和限制来获取最新的记录。在这个语法中,sortByDesc 是 "order by",take 是 "limit"。

$lastRecordData = DB::select('select * from products order by created_at desc limit 1'); 

dd($lastRecordData);

// OR 

$lastRecordData = DB::select('select * from YOUR_TABLE_NAME order by YOUR_DATE_COLUMN desc limit 1'); 

dd($lastRecordData);

这将给我们提供一个类似的表内最新记录的输出,但是是以对象形式出现的

输出

latest record in laravel table method 2

如果我们想将其转换为数组,只需一行代码就可以完成,我在一篇关于将对象转换为数组的文章中已经演示过

就这样,有两种方法可以从任何带有DateTime列的数据表中获取最新记录。希望这对你有帮助!