如何在 Laravel 查询中去除重复记录
发布时间 - 2026-02-01 00:00:00 点击率:次本文介绍在 laravel 中使用 distinct() 方法过滤数据库查询结果,避免返回重复值,特别适用于只需

在 Laravel 的 Eloquent 查询中,当需要从数据库中提取某字段的唯一值(例如获取所有有博客文章的用户 ID),而原始数据存在重复时,直接调用 get() 会返回包含重复项的结果集。此时,不应依赖 PHP 层去重(如 array_unique() 或集合的 unique()),而应优先利用数据库的原生能力——DISTINCT 关键字,既高效又语义清晰。
Laravel 提供了链式方法 distinct(),可直接追加在查询构造器后,确保 SQL 语句中生成 SELECT DISTINCT。例如:
$blog = BlogModel::select('user_id')->distinct()->get();执行后将返回:
[{"user_id":2},{"user_id":3},{"user_id":4},{"user_id":6}]✅ 优势说明:
- 数据库层面去重,减少网络传输与 PHP 内存开销;
- 语义明确,代码可读性强;
- 支持与其他查询条件组合,如:
$activeUserIds = BlogModel::where('status', 'published') ->select('user_id') ->distinct() ->get();
⚠️ 注意事项:
- distinct() 作用于整个 SELECT 列表,若同时选择多个字段(如 select('user_id', 'created_at')),则仅当所有选定字段组合完全相同时才视为重复;
- 若仅需纯数值数组(如 [2, 3, 4, 6]),可进一步使用 pluck('user_id'):
$userIds = BlogModel::select('user_id')->distinct()->pluck('user_id'); // 返回 Illuminate\Support\Collection: [2, 3, 4, 6]
综上,distinct() 是处理去重需求最直接、最推荐的 Laravel 官方方案,兼顾性能、简洁性与可维护性。
# php
# laravel
# 代码可读性
# sql
# 数值数组
# select
# 数据库
# 链式
# 多个
# 只需
# 适用于
# 不应
# 后将
# 可直接
# 时才
# 数据库中
# 仅需
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
北京的网站制作公司有哪些,哪个视频网站最好?
Python进程池调度策略_任务分发说明【指导】
Laravel如何为API编写文档_Laravel API文档生成与维护方法
如何在阿里云香港服务器快速搭建网站?
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
QQ浏览器网页版登录入口 个人中心在线进入
bootstrap日历插件datetimepicker使用方法
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
Laravel Fortify是什么,和Jetstream有什么关系
北京企业网站设计制作公司,北京铁路集团官方网站?
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
详解Huffman编码算法之Java实现
高防服务器租用首荐平台,企业级优惠套餐快速部署
Laravel怎么为数据库表字段添加索引以优化查询
如何批量查询域名的建站时间记录?
详解Android中Activity的四大启动模式实验简述
如何在建站主机中优化服务器配置?
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
Python并发异常传播_错误处理解析【教程】
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
中山网站推广排名,中山信息港登录入口?
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
在centOS 7安装mysql 5.7的详细教程
Laravel如何保护应用免受CSRF攻击?(原理和示例)
成都网站制作公司哪家好,四川省职工服务网是做什么用?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
Android自定义listview布局实现上拉加载下拉刷新功能
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
php 三元运算符实例详细介绍
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
深圳网站制作的公司有哪些,dido官方网站?
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
魔毅自助建站系统:模板定制与SEO优化一键生成指南
如何在云主机上快速搭建网站?
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
Laravel安装步骤详细教程_Laravel环境搭建指南
香港服务器WordPress建站指南:SEO优化与高效部署策略
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
iOS验证手机号的正则表达式
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
如何在宝塔面板中创建新站点?

