修改查询结果
Overview
在本指南中,您可以学习;了解如何自定义 Laravel MongoDB返回查询结果的方式。您可以通过将更多方法链接到 where()
方法来修改查找操作的结果。
以下部分演示如何修改where()
方法的行为:
要学习;了解有关 Laravel 集成中的 Eloquent 模型的更多信息,请参阅 Eloquent 模型部分。
开始之前
要运行本指南中的代码示例,请完成快速入门教程。 本教程说明如何使用示例数据设置 MongoDB Atlas 实例,并在 Laravel Web 应用程序中创建以下文件:
Movie.php
文件,其中包含一个Movie
movies
模型来表示collection中的文档MovieController.php
文件,其中包含用于运行数据库操作的show()
函数browse_movies.blade.php
文件,其中包含用于显示数据库操作结果的 HTML 代码
以下部分介绍如何编辑 Laravel 应用程序中的文件以运行查找操作代码示例并查看预期输出。
跳过并限制结果
此示例查询year
值为1999
的文档。 该操作会跳过前2
匹配文档,总共输出3
文档。
使用以下语法指定查询:
$movies = Movie::where('year', 1999) ->skip(2) ->take(3) ->get();
要在browse_movies
视图中查看查询结果,请编辑MovieController.php
文件中的show()
函数,使其类似于以下代码:
class MovieController { public function show() { $movies = Movie::where('year', 1999) ->skip(2) ->take(3) ->get(); return view('browse_movies', [ 'movies' => $movies ]); } }
Title: Three Kings Year: 1999 Runtime: 114 IMDB Rating: 7.2 IMDB Votes: 130677 Plot: In the aftermath of the Persian Gulf War, 4 soldiers set out to steal gold that was stolen from Kuwait, but they discover people who desperately need their help. Title: Toy Story 2 Year: 1999 Runtime: 92 IMDB Rating: 7.9 IMDB Votes: 346655 Plot: When Woody is stolen by a toy collector, Buzz and his friends vow to rescue him, but Woody finds the idea of immortality in a museum tempting. Title: Beowulf Year: 1999 Runtime: 95 IMDB Rating: 4 IMDB Votes: 9296 Plot: A sci-fi update of the famous 6th Century poem. In a besieged land, Beowulf must battle against the hideous creature Grendel and his vengeance seeking mother.
对查询结果进行排序
要根据指定字段的值对查询结果进行排序,请使用where()
方法,然后使用orderBy()
方法。
您可以对结果设置升序或降序排序。 默认情况下, orderBy()
方法对提供的字段名称设置升序排序,但您可以通过将"asc"
作为第二个参数传递来显式指定升序排序。 要指定降序排序,请将"desc"
作为第二个参数传递。
如果您的文档在特定字段中包含重复值,您可以通过指定更多要排序的字段来处理平局。 如果其他字段包含唯一值,这可确保结果一致。
此示例查询countries
字段的值包含"Indonesia"
的文档,并首先对year
字段进行升序排序,然后对title
字段进行降序排序。
使用以下语法指定查询:
$movies = Movie::where('countries', 'Indonesia') ->orderBy('year') ->orderBy('title', 'desc') ->get();
要在browse_movies
视图中查看查询结果,请编辑MovieController.php
文件中的show()
函数,使其类似于以下代码:
class MovieController { public function show() { $movies = Movie::where('countries', 'Indonesia') ->orderBy('year') ->orderBy('title', 'desc') ->get(); return view('browse_movies', [ 'movies' => $movies ]); } }
Title: Joni's Promise Year: 2005 Runtime: 83 IMDB Rating: 7.6 IMDB Votes: 702 Plot: A film delivery man promises ... Title: Gie Year: 2005 Runtime: 147 IMDB Rating: 7.5 IMDB Votes: 470 Plot: Soe Hok Gie is an activist who lived in the sixties ... Title: Requiem from Java Year: 2006 Runtime: 120 IMDB Rating: 6.6 IMDB Votes: 316 Plot: Setyo (Martinus Miroto) and Siti (Artika Sari Dewi) are young married couple ... ...
提示
要了解有关排序的更多信息,请参阅以下资源:
手册术语表中的 自然顺序MongoDB Server
Laravel 文档中的排序、分组、限制和偏移
更多信息
要查看演示如何使用 Laravel 集成执行查找操作的可运行代码示例,请参阅以下用法示例: