You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 10.45.1 Collection的unique方法未按预期工作问题咨询

Laravel Collection去重问题:unique与pluck执行顺序的影响

两种写法的本质差异

  • 有效写法:$oldValidUserPremiumPacks->unique('user_id')->pluck('user_id')

    1. 先执行unique('user_id'):针对原集合中每个包含user_id字段的元素(比如模型实例或关联数组),按照user_id字段的值进行去重,过滤掉重复user_id的元素。
    2. 再执行pluck('user_id'):从去重后的元素集合中提取user_id字段值,最终得到无重复的user_id列表。
  • 无效写法:$oldValidUserPremiumPacks->pluck('user_id')->unique('user_id')

    1. 先执行pluck('user_id'):直接从原集合提取所有user_id值,此时集合元素已经是纯数值/字符串(比如[1,1,2,3,3]),不再是包含user_id字段的对象或数组。
    2. 再执行unique('user_id'):unique方法会尝试读取每个元素的user_id字段,但当前集合元素是单个值,不存在该字段,去重逻辑完全不生效,最终得到的仍是有重复的user_id列表。

修正方案

如果要先提取user_id再去重,直接调用不带参数的unique()即可,它会直接对集合中的单个值进行去重:

$oldValidUserPremiumPacks->pluck('user_id')->unique();

内容的提问来源于stack exchange,提问作者Adem Tepe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 13:09:53