在 Laravel 5 中按行排序并限制结果
Posted
技术标签:
【中文标题】在 Laravel 5 中按行排序并限制结果【英文标题】:Order by row and limit result in Laravel 5 【发布时间】:2015-05-30 07:52:19 【问题描述】:我正在尝试从基于 laravel 5 的应用程序中的数据库中获取结果,但我终其一生都无法弄清楚。
我想从名为 count 的行中选择前 5 个结果 DESC。 这就是我所拥有的:
$full = Fulls::all()->orderBy('count', 'desc')->take(5)->get();
我也尝试了很多其他方法,但似乎没有任何效果。现在我收到一个错误:
indexController.php 第 19 行中的 FatalErrorException:调用未定义 方法 Illuminate\Database\Eloquent\Collection::orderBy()
但是,无论我在哪里看到有人与orderBy()
一起工作,所以...我做错了什么?
提前谢谢...
【问题讨论】:
【参考方案1】:您应该改用Fulls::orderBy(..)->take(5)->get()
。
【讨论】:
【参考方案2】:如果要对集合进行排序/排序,可以使用 sortBy() 方法。
例如。
$full = Fulls::get(); // Get the Fulls collections
$full = $full->sortBy('count')->take(5);
【讨论】:
【参考方案3】:你可以跳过偏移量
$full = Fulls::orderBy('count', 'desc')->skip(0)->take(5)->get(); //get first 5 rows
$full = Fulls::orderBy('count', 'desc')->skip(5)->take(5)->get(); //get next 5 rows
实际的 mysql 查询如下所示:
SELECT * FROM fulls ORDER BY count DESC LIMIT 0,5
【讨论】:
【参考方案4】:你可以使用laravel的skip
和take
函数和orderBy
Fulls::where([['user_id','=',auth()->user()->id]])
->where([['title','LIKE',"%".$text_val."%"]])
->orderBy('id','DESC')
->skip($offset)
->take(2)
【讨论】:
以上是关于在 Laravel 5 中按行排序并限制结果的主要内容,如果未能解决你的问题,请参考以下文章