Sql Laravel雄辩->;采取(5)不工作,如果得到较少的结果
目前在网站上工作,我需要做一个列表,但在主页上,我想显示列表的最大5个项目的较小版本,所以通常这将工作Sql Laravel雄辩->;采取(5)不工作,如果得到较少的结果,sql,laravel,eloquent,Sql,Laravel,Eloquent,目前在网站上工作,我需要做一个列表,但在主页上,我想显示列表的最大5个项目的较小版本,所以通常这将工作 $items = collect(DB::select('EXEC [List] ?',[ Carbon::now()->year ])->take(5)); 但现在,自从它的新网站,它没有超过5条记录,而且每年检索到的记录也将少于5条。尝试使用限制(5),但这似乎也不起作用,所以你们中有人有解决这个问题的办法吗 如果有什么
$items = collect(DB::select('EXEC [List] ?',[
Carbon::now()->year
])->take(5));
但现在,自从它的新网站,它没有超过5条记录,而且每年检索到的记录也将少于5条。尝试使用限制(5),但这似乎也不起作用,所以你们中有人有解决这个问题的办法吗
如果有什么不清楚的地方,就问我,我会尽力解释清楚的。请检查一下
$item=collect(DB::table('item')->select('*')->take(5)->get())代码>
可能是您忘记在查询中添加->get()
。您似乎在数组上使用此函数。尝试分两步进行。
首先:获取收藏。
第二:用它工作
//$items = collect(...)
$items = $items->take(5);
编辑
您正在该阵列上使用它。内部命令将关闭DB::select()调用!
尝试:
编辑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();
这将准备一个成本较低的数据库调用,因为您没有选择所有行。我们刚刚找到了答案。我使用的查询是
collect(DB::select()->take());
但事实应该是这样的
collect(DB::select())->take();
有时我真的很讨厌这样的小事情,总是忽略它们。limit(5)的输出是什么错误是对数组上的成员函数limit()的get调用相同的for take()如果为take()提供一个可以传递的值是否有效?是的,到目前为止,如果我设置take(1),其中有一条记录(1)它确实有效,但只要我去take(2)或者更高的失败率。之后你用$items做什么。你能分享你剩下的代码吗?
collect(DB::select())->take();