Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel:如何在按升序排序后获取最后n行(任意数量)? 我的模型表中有3列id、msg和在处创建created_at是一个时间戳,id是主键 我还有5个数据,world=>time4,hello=>time2,haha=>time1,hihio=>time5和dunno=>time3,这些数据是根据id按升序排列的_Php_Mysql_Sorting_Laravel_Laravel 4 - Fatal编程技术网

Php Laravel:如何在按升序排序后获取最后n行(任意数量)? 我的模型表中有3列id、msg和在处创建created_at是一个时间戳,id是主键 我还有5个数据,world=>time4,hello=>time2,haha=>time1,hihio=>time5和dunno=>time3,这些数据是根据id按升序排列的

Php Laravel:如何在按升序排序后获取最后n行(任意数量)? 我的模型表中有3列id、msg和在处创建created_at是一个时间戳,id是主键 我还有5个数据,world=>time4,hello=>time2,haha=>time1,hihio=>time5和dunno=>time3,这些数据是根据id按升序排列的,php,mysql,sorting,laravel,laravel-4,Php,Mysql,Sorting,Laravel,Laravel 4,在Laravel4中,我希望获取这些数据,按升序排列,并获取最后n个(在本例中为3个)记录。因此,我想让dunno,world和hihio行在div中显示如下: dunno,time3 world,time4 hihio,time5 dunno,time3 world,time4 hihio,time5 我尝试过的 Model::orderBy('created_at','asc')->take(3); Model::orderBy('created_at','desc')->

在Laravel4中,我希望获取这些数据,按升序排列,并获取最后n个(在本例中为3个)记录。因此,我想让
dunno
world
hihio
行在div中显示如下:

dunno,time3
world,time4
hihio,time5
dunno,time3
world,time4
hihio,time5
我尝试过的

Model::orderBy('created_at','asc')->take(3);
Model::orderBy('created_at','desc')->take(3);
意外结果:

haha,time1
hello,time2
dunno,time3
hihio,time5
world,time4
dunno,time3
也尝试过

Model::orderBy('created_at','asc')->take(3);
Model::orderBy('created_at','desc')->take(3);
意外结果:

haha,time1
hello,time2
dunno,time3
hihio,time5
world,time4
dunno,time3
我也尝试过相反的方法,但运气不佳

Model::take(3)->orderBy('created_at','asc');

这个问题似乎相当简单,但我似乎无法正确理解我的逻辑。我对Laravel 4还是相当陌生的,所以我会给比使用
orderBy()
take()
更好的解决方案加分。多谢各位

你的第二次尝试已经很接近了。从数据库检索行之后,只需反转数组。假设您有一个
illumb\Support\Collection
的实例,您只需要执行以下操作:

$expectedResult = $collection->reverse();
你很接近

听起来像是要先按降序排列数组

  Model::orderBy('created_at','desc')->take(3);
但随后反转数组。您可以通过两种方法之一来实现这一点,要么是传统的PHP(使用array_reverse)

或者使用laravel的
集合
类中的
反向
功能,使用laravel方式

  $_dates = Model::orderBy('created_at','desc')->take(3)->reverse();
在他们的API站点上查看Laravel的
收藏
文档,网址为

现在$dates将包含您想要的输出


要按升序获取最后三行,请执行以下操作:

$_dates = Model::orderBy('created_at','desc')->take(3)->reverse();
现在,$\u dates的json输出将为您提供一个对象对象

要获取对象数组,请使用:

$_dates = Model::orderBy('created_at','desc')->take(3)->reverse()->values();
使用
orderBy('created_at','desc')->取(3)
,然后反转数组。