您可以通过对对象集合或查询构建器调用 distinct()方法来检索集合中文档的不同字段值。
要检索不同的字段值,请将查询过滤传递给where()方法,并将字段名称传递给select()方法。 然后,调用distinct()以返回与查询过滤匹配的文档中所选字段的唯一值。
提示
有关查询筛选器的更多信息,请参阅读取操作指南中的 检索与查询匹配的文档 部分。
例子
从以下 Eloquent 和 Query Builder 标签页中选择,查看使用每个相应查询语法的同一操作的用法示例:
此示例将执行以下动作:
使用
MovieEloquent 模型表示sample_mflix数据库中的movies集合从
movies集合中检索与查询筛选器匹配的文档的不同字段值打印非重复值
该示例在Movie模型上调用以下方法:
where():匹配其中directors字段的值包含"Sofia Coppola"的文档select():检索匹配文档的imdb.rating字段值distinct():检索所选字段的唯一值并返回值列表get():检索查询结果
$ratings = Movie::where('directors', 'Sofia Coppola') ->select('imdb.rating') ->distinct() ->get(); echo $ratings;
[[5.6],[6.4],[7.2],[7.8]]
此示例将执行以下动作:
通过从
DB门面调用table()方法来访问movies集合从
movies集合中检索与查询筛选器匹配的文档的不同字段值打印非重复值
该示例调用以下查询构建器方法:
where():匹配其中directors字段的值包含"Sofia Coppola"的文档select():检索匹配文档的imdb.rating字段值distinct():检索所选字段的唯一值并返回值列表get():检索查询结果
$ratings = DB::table('movies') ->where('directors', 'Sofia Coppola') ->select('imdb.rating') ->distinct() ->get(); echo $ratings;
[5.6,6.4,7.2,7.8]
要了解如何编辑 Laravel 应用程序以运行用法示例,请参阅用法示例登录页面。