I need to compare and sum data from two different date.
Assuming i have 4 input dates
JavaScript
x
startdate = "2020-11-01",
enddate = "2020-11-30",
compare_startdate = "2020-12-01",
compare_enddate = "2020-12-31",
Currently, my query only able to get one whereBetween date data as below
Current Code
JavaScript
$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();
Current result from startdate
and enddate
JavaScript
"total_debit" => "0.00"
"total_credit" => "200.00"
"net_movement" => "-200.00"
Example another result from compare_startdate
and compare_enddate
JavaScript
"total_debit" => "0.00"
"total_credit" => "50.00"
"net_movement" => "-50.00"
How to query another result from compare_startdate
to compare_enddate
in order to sum result of startdate
and enddate
?
Expected result
JavaScript
"total_debit" => "0.00"
"total_credit" => "150.00"
"net_movement" => "-150.00"
I did try something like this in query but result is incorrect
JavaScript
$query->whereBetween('date', array($init['startdate'], $init['enddate']));
$query->whereBetween('date', array($init['compare_startdate'], $init['compare_enddate']));
Advertisement
Answer
Hi Friend You Can Use orWhereBetween in advance where clause as below,
JavaScript
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();