Docs 菜单

修改查询结果

在本指南中,您可以学习;了解如何自定义 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 ...
...

提示

要了解有关排序的更多信息,请参阅以下资源:

要查看演示如何使用 Laravel 集成执行查找操作的可运行代码示例,请参阅以下用法示例:

要学习;了解如何根据过滤条件检索数据,请参阅检索数据指南。