首页 > 解决方案 > 如何比较两个集合并获取匹配记录

问题描述

我正在使用 Laravel,我有两个包含产品 ID 的不同集合

第一个是colorProduct第二个是tagProduct

所以我想比较这两者并只获得相同的产品 ID,那么我该怎么做呢?

$colorProducts = Color::where('code', $request->color)->get()->first()->products;

$tagProducts = $tag->products->where('shop_id', $shop->id);

$colorAndTagProducts = collect();

foreach ($colorProducts->toBase()->merge($tagProducts)->unique('id')->groupBy('id') as $allProducts) {
    if ($allProducts->count() >= 1) {
        $colorAndTagProducts[] = $allProducts->first();
    }
}

这里

$colorAndTagProducts

给我所有记录都来自两个集合,但我只想要相同的记录

标签: phplaravelcollections

解决方案


intersect()

intersect 方法从原始集合中删除给定数组或集合中不存在的任何值。生成的集合将保留原始集合的键:

我用这种方法做到了


推荐阅读