Overview
在本指南中,您可以学习;了解如何自定义 Laravel MongoDB返回查询结果的方式。您可以通过将更多方法链接到 where() 方法来修改查找操作的结果。
以下部分演示如何修改where()方法的行为:
Skip and Limit Results uses the
skip()method to set the number of documents to skip and thetake()method to set the total number of documents to returnSort Query Results uses the
orderBy()method to return query results in a specified order based on field values
要了解有关 Laravel 集成中 Eloquent 模型的更多信息,请参阅Eloquent Model 类部分。
开始之前
要运行本指南中的代码示例,请完成快速入门教程。 本教程说明如何使用示例数据设置 MongoDB Atlas 实例,并在 Laravel Web 应用程序中创建以下文件:
Movie.php文件,其中包含一个Moviemovies模型来表示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 ]); } }
对查询结果进行排序
要根据指定字段的值对查询结果进行排序,请使用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 ]); } }
更多信息
要查看演示如何使用 Laravel 集成执行查找操作的可运行代码示例,请参阅以下用法示例: