php - 如何比较两个集合并获取匹配记录
问题描述
我正在使用 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
给我所有记录都来自两个集合,但我只想要相同的记录
解决方案
intersect()
intersect 方法从原始集合中删除给定数组或集合中不存在的任何值。生成的集合将保留原始集合的键:
我用这种方法做到了
推荐阅读
- postgresql - 如何在 pgAdmin 中放大错误窗口
- sql-server - docker 容器由于体积而无法创建
- javascript - 这个命令是什么意思?import DataTypes = require('./lib/data-types');
- node.js - 猫鼬。正确增量四舍五入到 2 位数
- javascript - 如何将对象推入嵌套对象中?
- android - Android Horizontal RecyclerView 中心项
- testcafe - 如何调试 TestCafe 以查看为什么它在运行测试中途停止报告通过或失败?
- asp.net-core - ASP NET - 不正确的 ID
- android - testkey.sf 和 bndltool.sf 的区别
- python - 为什么我找不到这个 xpath 按钮?