【问题标题】:Order by row and limit result in Laravel 5在 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() 一起工作,所以...我做错了什么?

提前谢谢...

【问题讨论】:

    标签: php laravel eloquent


    【解决方案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的skiptake函数和orderBy

          Fulls::where([['user_id','=',auth()->user()->id]])
                          ->where([['title','LIKE',"%".$text_val."%"]])
                          ->orderBy('id','DESC')
                          ->skip($offset)
                          ->take(2)
          

          【讨论】:

            猜你喜欢
            • 2020-08-14
            • 2022-01-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-09-14
            • 2018-12-13
            • 1970-01-01
            相关资源
            最近更新 更多