1

Laravel 5.1 でレポートを作成するためのデフォルト クエリを設定しようとしています。その後、このデフォルトのクエリを設定し、were でいくつかの条件を設定して、これらの結果を変数で取得しようとしています。

例えば:

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

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

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

問題は:

$closed を返したときの数値は問題ありませんが、$re_open を返したときのカウントは 0 です。これは、クエリがクローズの最初の条件と共に再オープンの 2 番目の条件を追加するためです。

このような:

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

$tasks のクエリは、すべてのレポートで常に同じです。すべてのコードでクエリをコピーせずに、デフォルトのクエリを使用して 2 番目の条件を取得するにはどうすればよいですか?

ありがとう!!!

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();

わかりました、1 つのクエリに対して 2 行ありますが、既定のクエリにこの方法でより多くのフィルターがある場合は、よりクリーンになります。

ありがとう

于 2016-02-12T12:55:04.280 に答える