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

时间:2016-02-11 19:14:21

标签: laravel-5 eloquent laravel-query-builder

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

例如:

$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中的查询对于所有报告始终是相同的。如何使用默认查询获得第二个条件而不在我的所有代码中复制查询?

感谢!!!

1 个答案:

答案 0 :(得分: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();

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

由于