php - 如何在 Laravel 集合中使用多个 whereIn
问题描述
我有一组数组,我试图根据$prices
传入的值返回。$prices = ['100', '200'];
$collection = collect([
['product' => 'Desk', 'price' => 100, 'price2' => 150],
['product' => 'Chair', 'price' => 150, 'price2' => 200],
['product' => 'Bookcase', 'price' => 300, 'price2' => 350],
['product' => 'Door', 'price' => 400, 'price2' => 200],
['product' => 'Door', 'price' => 450, 'price2' => 500],
]);
$filtered = $collection->whereIn('price', $prices)->whereIn('price2', $prices);
$filtered->all();
/* The result should return where price or price2 is 100 or 200:
[
['product' => 'Desk', 'price' => 100, 'price2' => 150],
['product' => 'Chair', 'price' => 150, 'price2' => 200],
['product' => 'Door', 'price' => 400, 'price2' => 200],
]
*/
解决方案
您可以使用 collectionfilter
而不是 whereIn :
$prices = ['100', '200'];
$collection = collect([
['product' => 'Desk', 'price' => 100, 'price2' => 150],
['product' => 'Chair', 'price' => 150, 'price2' => 200],
['product' => 'Bookcase', 'price' => 300, 'price2' => 350],
['product' => 'Door', 'price' => 400, 'price2' => 200],
['product' => 'Door', 'price' => 450, 'price2' => 500],
]);
$filtered = $collection->filter(function ($value, $key) use ($prices) {
return (in_array($value['price'], $prices) || in_array($value['price2'], $prices)) ? true : false ;
});
$filtered->all();
推荐阅读
- linux - 在 chroot 环境中运行 yum groupupdate 时出现文件夹冲突
- java - 将 Java 字符串转换为 PostreSQL 字符变化(«mpaa_rating»)?
- java - 如何检查 ObservableArray 中是否已存在具有重复 LocalDateTime 属性的对象?
- c - 使用 OpenGL 渲染时的多线程对象加载
- c++ - 没有 srcs 的 Bazel cc_library 不能自行编译
- python - 重新启动应用程序中的线程,还是让服务器重新启动整个应用程序是更好的做法?
- java - 以下 Java/Android 语法实际上在做什么?
- python - 尝试 pip 安装时没有模块名称“_ctypes”
- android - Phonegap 构建 config.xml 和地理位置
- amazon-web-services - 如何在 AWS CloudFormationTemplate 中为 Lambda 引用 AWS GlobalSecondaryIndex 名称