0

我有这个雄辩的疑问:

$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

2 回答 2

3

我建议你不要做 4 db 查询,你可以只做一个查询,之后,你可以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);
于 2019-03-10T10:41:15.760 回答
1

你可以这样做

$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);
于 2019-03-10T10:46:07.713 回答