Laravel引用母亲查询

问题描述 投票:0回答:2

我有这个雄辩的问题:

$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查询?

laravel
2个回答
3
投票

我建议你不要做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);

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);
© www.soinside.com 2019 - 2024. All rights reserved.