id
,msg
和created_at
。 created_at
是时间戳,id
是主键。world => time4
,hello => time2
,haha => time1
,hihio => time5
和dunno => time3
,这些数据按升序排列(如此处所列) )基于他们的id
。在laravel 4中,我想获取这些数据,按升序排列它们并获取最后n个(在本例中为3个)记录数。所以,我希望在div中显示dunno
,world
和hihio
行:
dunno,time3
world,time4
hihio,time5
我尝试了什么
Model::orderBy('created_at','asc')->take(3);
意外结果:
haha,time1
hello,time2
dunno,time3
也尝试了
Model::orderBy('created_at','desc')->take(3);
意外结果:
hihio,time5
world,time4
dunno,time3
我也尝试了反向而没有运气
Model::take(3)->orderBy('created_at','asc');
这个问题看起来相当简单,但我似乎无法理解我的逻辑。我在Laravel 4中仍然相当新,所以如果有的话,我会给予更好的解决方案,而不是使用orderBy()
和take()
。非常感谢你!
答案 0 :(得分:8)
你非常接近。
听起来你想先按降序排列数组
Model::orderBy('created_at','desc')->take(3);
然后反转数组。您可以使用以下两种方法之一:传统的PHP(使用array_reverse)。
$_dates = Model::orderBy('created_at','desc')->take(3);
$dates = array_reverse($_dates);
或laravel方式,使用Laravel的reverse
类中的Collection
函数。
$_dates = Model::orderBy('created_at','desc')->take(3)->reverse();
在http://laravel.com/api/class-Illuminate.Support.Collection.html
的API网站上查看Laravel的Collection
文档
现在$ dates将包含您想要的输出。
dunno,time3
world,time4
hihio,time5
答案 1 :(得分:3)
你的第二次尝试非常接近。从数据库中检索行后,您只需要反转该数组。假设您有一个Illuminate\Support\Collection
的实例,您只需要以下内容:
$expectedResult = $collection->reverse();
答案 2 :(得分:1)
要以升序获取最后三行:
$_dates = Model::orderBy('created_at','desc')->take(3)->reverse();
现在,$ _dates的json输出将为您提供对象的对象。
要获取对象数组,请使用:
$_dates = Model::orderBy('created_at','desc')->take(3)->reverse()->values();
答案 3 :(得分:0)
$ reverse = Model :: orderBy('created_at','desc')-> take(3);
$ show = $ reverse-> reverse();