【问题标题】:Is there a way to "limit" the result with ELOQUENT ORM of Laravel?有没有办法用 Laravel 的 ELOQUENT ORM 来“限制”结果?
【发布时间】:2013-02-20 04:17:33
【问题描述】:

有没有办法用 Laravel 的 ELOQUENT ORM 来“限制”结果?

 SELECT * FROM  `games` LIMIT 30 , 30 

Eloquent 呢?

【问题讨论】:

    标签: mysql laravel eloquent sql-limit


    【解决方案1】:

    创建一个扩展 Eloquent 的游戏模型并使用它:

    Game::take(30)->skip(30)->get();
    

    take() 这里会得到 30 条记录,skip() 这里会偏移到 30 条记录。


    在最近的 Laravel 版本中,您还可以使用:

    Game::limit(30)->offset(30)->get();
    

    【讨论】:

    【解决方案2】:

    如果您希望对结果进行分页,请使用集成的 paginator,它非常有用!

    $games = Game::paginate(30);
    // $games->results = the 30 you asked for
    // $games->links() = the links to next, previous, etc pages
    

    【讨论】:

    • 这真是太棒了!使用引导程序,实际上您需要的所有代码都是控制器中的 $games = Game::paginate(30) 和视图中的 {{ $games->links() }} ......它会处理所有事情。喜欢 Laravel!
    【解决方案3】:

    我们可以像下面这样使用 LIMIT:

    Model::take(20)->get();
    

    【讨论】:

    【解决方案4】:

    另外,我们可以通过以下方式使用它

    只获得第一个

     $cat_details = DB::table('an_category')->where('slug', 'people')->first();
    

    通过限制和偏移获取

    $top_articles = DB::table('an_pages')->where('status',1)->limit(30)->offset(0)->orderBy('id', 'DESC')->get();
    $remaining_articles = DB::table('an_pages')->where('status',1)->limit(30)->offset(30)->orderBy('id', 'DESC')->get();
    

    【讨论】:

      猜你喜欢
      • 2021-03-23
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 2018-03-06
      • 2016-07-01
      • 2020-02-16
      相关资源
      最近更新 更多