我正在尝试设置默认查询以在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中的查询对于所有报告始终是相同的。如何使用默认查询获得第二个条件而不在我的所有代码中复制查询?
感谢!!!
答案 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行,但如果我的默认查询有更多过滤器,这种方式更干净。
由于