在Laravel 5中按行排序并限制结果。

15 浏览
0 Comments

在Laravel 5中按行排序并限制结果。

我试图从一个基于laravel 5的应用程序中的数据库中获取结果,但是我无论如何都弄不明白。

我想要选择名为count的行中的前5个结果降序排列。

这是我写的代码:

$full = Fulls::orderBy('count', 'desc')->take(5)->get();

我还尝试了很多其他方法,但似乎都不起作用。现在我得到了一个错误:

FatalErrorException in indexController.php line 19: Call to undefined

method Illuminate\Database\Eloquent\Collection::orderBy()

然而,无论我看哪里,我都看到人们使用orderBy(),所以...我做错了什么?

提前感谢...

0
0 Comments

问题的出现原因是需要按照指定的顺序和限制结果。在Laravel 5中,可以使用orderBy方法对查询结果进行排序,skip方法跳过指定数量的行,take方法限制结果的数量。然而,在使用这些方法时,可能会遇到问题。

解决方法是使用orderBy方法对查询结果进行排序,skip方法跳过指定数量的行,take方法限制结果的数量。通过组合使用这些方法,可以按照指定的顺序和限制结果。

下面是一个使用这些方法的示例代码:

$full = Fulls::orderBy('count', 'desc')->skip(0)->take(5)->get(); //获取前5行
$full = Fulls::orderBy('count', 'desc')->skip(5)->take(5)->get(); //获取接下来的5行

上述代码将生成以下的mysql查询语句:

SELECT * FROM fulls ORDER BY count DESC LIMIT 0,5

通过使用orderBy、skip和take方法,可以按照指定的顺序和限制结果,获取指定数量的行。这样,就能够满足按照要求排序和限制结果的需求。

0
0 Comments

在Laravel 5中,如果我们想要对一个集合进行排序,我们可以使用sortBy()方法。例如,我们可以这样做:

$full = Fulls::get(); // 获取Fulls集合
$full = $full->sortBy('count')->take(5); // 按照'count'字段排序并且只取前5个结果

然而,有时候我们可能想要对一个集合进行排序并且限制结果的数量,但是上面的方法可能会出现一些问题。下面我们来解释一下这个问题以及解决办法。

问题的出现原因是sortBy()方法会对整个集合进行排序,然后再取出指定数量的结果。这意味着如果集合很大,排序操作可能会非常耗时。而且,排序操作是在内存中进行的,如果集合的大小超过了可用内存的限制,就会导致程序崩溃。

为了解决这个问题,我们可以使用orderBy()方法和limit()方法来实现排序和限制结果数量。orderBy()方法可以用来指定排序字段,而limit()方法可以用来限制结果数量。

下面是使用orderBy()方法和limit()方法的示例代码:

$full = Fulls::orderBy('count')->limit(5)->get();

通过使用orderBy()方法和limit()方法,我们可以在数据库层面上进行排序和限制结果数量的操作,从而避免了上述问题的出现。这样不仅可以提高性能,还可以避免内存溢出的问题。

总结起来,如果我们在Laravel 5中想要对一个集合进行排序并且限制结果数量,我们可以使用orderBy()方法和limit()方法来实现。这样可以避免sortBy()方法可能出现的性能问题和内存溢出问题。

0
0 Comments

问题出现的原因是在Laravel 5中,使用orderBylimit方法时,需要使用take方法来设置结果的限制数量。具体的解决方法是使用Fulls::orderBy(..)->take(5)->get()来替代原来的代码。

0