报告和选择数据的默认查询

Default Query to Report and pick datas

我正在尝试设置默认查询以在 Laravel 5.1 中生成报告。之后我设置了这个默认查询,我是 尝试将一些条件与 we 放在一起,并在变量中获得这些结果。

例如:

$tasks = Task::whereBetween('created_at', [$date1, $date2]);

$closed = $tasks->where('closed', 1)->count();

$re_open = $tasks->where('reopen', 1)->count();

问题是:

当我返回 $closed 时,数字是正确的,但是当我返回 $re_open 时,计数为 0,因为查询添加了重新打开的第二个条件和关闭的第一个条件。

像这样:

select * from `tasks` where `created_at` between ? and ? and `closed` = ? and `reopen` = ?

$tasks 中的查询对于所有报告始终相同。我如何使用默认查询获得第二个条件而不复制我所有代码中的查询?

谢谢!!!

我不知道这是否是最佳答案,但我用这个解决了问题:

我设置默认查询:

$query = Task::whereBetween('created_at', [$date1, $date2]);

并将其用于每个过滤器:

$tasks  = clone $query;
$closed = $tasks->where('closed', 1)->get();

$tasks  = clone $query;
$reopen = $tasks->where('reopen', 1)->get();

好的,我有 2 行用于 1 个查询,但如果我的默认查询有更多过滤器,这种方式会更干净。

谢谢