【发布时间】:2018-05-17 08:59:59
【问题描述】:
我正在尝试过滤数据库查询,我想知道是否可以使用whereIn 来执行此操作?目前它被忽略了。
第一个查询工作正常:
$cosmeticTestAllData = DB::table('table')
->whereIn('part_number', ['P1', 'P2', 'P3', 'P4', 'P5', 'P6'])
->get();
示例结果:
Array (
[0] => stdClass Object
(
[part_number] => P1
[status] => FAIL
[shipment_channel] => DP
[created_at] => 2017-01-24 10:25:21
)
[1] => stdClass Object
(
[part_number] => P2
[status] => PASS
[shipment_channel] => DP
[created_at] => 2018-01-24 10:25:21
)
[2] => stdClass Object
(
[part_number] => P2
[status] => FAIL
[shipment_channel] => DP
[created_at] => 2018-01-24 10:25:21
)
)
此查询正确过滤了where 子句,但忽略了whereIn
$fullCount = $cosmeticTestAllData;
$fullCount->where('created_at', '>', '2018-01-01 00:00:00');
$fullCount->whereIn('shipment_channel', ['ANYTHING']);
$fullCount->whereIn('status', ['ANYTHING')];
echo '<pre>';
print_r($fullCount->all());die;
结果:
Array (
[0] => stdClass Object
(
[part_number] => P2
[status] => PASS
[shipment_channel] => DP
[created_at] => 2018-01-24 10:25:21
)
[1] => stdClass Object
(
[part_number] => P2
[status] => FAIL
[shipment_channel] => DP
[created_at] => 2018-01-24 10:25:21
)
)
【问题讨论】:
-
使用
get()而不是all() -
当我使用
get()时出现以下错误...Missing argument 1 for Illuminate\Support\Collection::get(),我假设get()仅用于数据库查询 -
为什么不将 whereIn 的第二个参数作为数组传递
-
抱歉,我的问题打错了,现在我更新代码,因为在实际代码中,即使将它作为数组,问题仍然存在。
-
您检查过 Eloquent 实际生产的产品吗?尝试使用
dd($fullCount->toSql())来检查正在生成的 sql