Sql Laravel雄辩->;采取(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),但这似乎也不起作用,所以你们中有人有解决这个问题的办法吗 如果有什么

目前在网站上工作,我需要做一个列表,但在主页上,我想显示列表的最大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();