当前在我需要列出列表的网站上工作,但在首页上我想显示列表的较小版本,最多5个项目,因此通常可以正常工作。
$items = collect(DB::select('EXEC [List] ?',[
Carbon::now()->year
])->take(5));
但是,由于自从其新网站发布以来,它没有超过5条记录,而且每年新检索到的记录也将少于5条。也尝试使用limit(5),但这似乎并没有工作那么你们其中一个有解决方案吗?
如果某些东西不能完全清除,那就请生病,尝试更好地解释一下。
答案 0 :(得分:1)
似乎您正在数组上使用此函数。尝试分两个步骤进行。
首先:获取收藏集。
第二:使用它。
//$items = collect(...)
$items = $items->take(5);
修改 您正在该阵列上使用它。内部括号关闭您的DB :: select()调用! 尝试:
$items = collect(DB::select('EXEC [List] ?', [Carbon::now()->year]))
->take(5);
修改2:
如apokryfos所述,随着数据库的增长,此调用变得越来越昂贵。当您只需要这5个条目时,可以尝试如下操作:
$items = DB::table('TABLENAME')
->select('*')
//assuming you have a created_at col which can be handled as date.
->whereYear('created_at', '=', date('Y'))
->limit(5)
->get();
这应该准备一个较便宜的数据库调用,因为您无需选择所有行。
答案 1 :(得分:0)
请检查一下
$item = collect(DB::table('item')->select('*')->take(5)->get());
可能是您忘记在查询中添加->get()
。
答案 2 :(得分:0)
刚刚找到答案。我使用的查询是
collect(DB::select()->take());
但应该是
collect(DB::select())->take();
有时候我真的很讨厌像这样的小东西,总是忽略它们。