我有这个雄辩的问题:
$result = Model::whereBetween('created_at', [$date_from, $date_to]);
$active_records = $result->where('status_id', 1)->get();
$pending_records = $result->where('status_id', 2)->get();
$closed_records = $result->where('status_id', 3)->get();
我的问题是$active_records
上的查询影响了对$closed_records
和$pending_records
的查询。
如何使最后两个查询引用原始的$result
查询?
我建议你不要做4分贝查询,你可以做一个查询,之后,你可以使用Laravel Collection
过滤你的列表,所以你的代码将是这样的,并确认$active_records
不会影响$closed_records
:
$result = Model::whereBetween('created_at', [$date_from, $date_to])->get();
$active_records = $result->where('status_id', 1);
$pending_records = $result->where('status_id', 2);
$closed_records = $result->where('status_id', 3);
你可以这样做
$result = Model::whereIn('status_id', [1, 2, 3])
->whereBetween('created_at', [$date_from, $date_to])
->get();
$active_records = $result->where('status_id', 1);
$pending_records = $result->where('status_id', 2);
$closed_records = $result->where('status_id', 3);