如何使用多个 whereBetween 求和两个不同的记录

How to use multiple whereBetween to sum two different record

我需要对两个不同日期的数据进行比较和求和。

假设我有 4 个输入日期

startdate = "2020-11-01",
enddate = "2020-11-30",
compare_startdate = "2020-12-01",
compare_enddate = "2020-12-31",

目前,我的查询只能得到一个 whereBetween 日期数据如下

当前代码

$raw_data = ChartOfAccount::with(array(
    'journal' => function($query) use ($init)
    {
            $query->selectRaw('*,
            sum(item_journals.debit) as total_debit,
            sum(item_journals.credit) as total_credit,
            sum(item_journals.debit) - sum(item_journals.credit) as net_movement');
            $query->groupBy('chart_of_account_id');
            $query->where('item_journals.deleted_at', null);
            $query->whereBetween('date', array($init['startdate'], $init['enddate']));                
    }
    ))
    ->get();

startdateenddate

的当前结果
"total_debit" => "0.00"
"total_credit" => "200.00"
"net_movement" => "-200.00"

示例来自 compare_startdatecompare_enddate

的另一个结果
 "total_debit" => "0.00"
 "total_credit" => "50.00"
 "net_movement" => "-50.00"

如何查询从 compare_startdatecompare_enddate 的另一个结果,以便对 startdateenddate 的结果求和?

预期结果

"total_debit" => "0.00"
"total_credit" => "150.00"
"net_movement" => "-150.00"

我确实在查询中尝试过类似的操作,但结果不正确

$query->whereBetween('date', array($init['startdate'], $init['enddate']));                
$query->whereBetween('date', array($init['compare_startdate'], $init['compare_enddate']));                

你好朋友你可以使用 orWhereBetween 提前 where 子句如下,

DB::table('tbl')
  ->Where(function ($query) use ($startdate,$enddate,$compare_startdate,$compare_enddate) {
      $query->whereBetween('date', [$startdate, $enddate]);
      $query->orWhereBetween('date', [$compare_startdate, $compare_enddate] );
})->get();