1

我正在尝试设置默认查询以在 Laravel 5.1 中进行报告。之后,我设置了这个默认查询,我尝试使用 are 设置一些条件并将这些结果放入变量中。

例如:

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

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

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

问题是:

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

像这样:

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

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

谢谢!!!

4

1 回答 1

0

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

我设置了默认查询:

$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 个查询,但是如果我的默认查询有更多过滤器,那么这种方式会更干净。

谢谢

于 2016-02-12T12:55:04.280 回答