【发布时间】:2013-02-20 04:17:33
【问题描述】:
有没有办法用 Laravel 的 ELOQUENT ORM 来“限制”结果?
SELECT * FROM `games` LIMIT 30 , 30
Eloquent 呢?
【问题讨论】:
标签: mysql laravel eloquent sql-limit
有没有办法用 Laravel 的 ELOQUENT ORM 来“限制”结果?
SELECT * FROM `games` LIMIT 30 , 30
Eloquent 呢?
【问题讨论】:
标签: mysql laravel eloquent sql-limit
创建一个扩展 Eloquent 的游戏模型并使用它:
Game::take(30)->skip(30)->get();
take() 这里会得到 30 条记录,skip() 这里会偏移到 30 条记录。
在最近的 Laravel 版本中,您还可以使用:
Game::limit(30)->offset(30)->get();
【讨论】:
如果您希望对结果进行分页,请使用集成的 paginator,它非常有用!
$games = Game::paginate(30);
// $games->results = the 30 you asked for
// $games->links() = the links to next, previous, etc pages
【讨论】:
我们可以像下面这样使用 LIMIT:
Model::take(20)->get();
【讨论】:
take 只是limit 的别名。见github.com/laravel/framework/blob/5.7/src/Illuminate/Database/…。
另外,我们可以通过以下方式使用它
只获得第一个
$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();
【讨论】: