#php #laravel #laravel-7
#php #laravel #laravel-7
Вопрос:
Мне нужно сравнить и суммировать данные с двух разных дат.
Предполагая, что у меня есть 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();
Текущий результат из startdate
и enddate
"total_debit" => "0.00"
"total_credit" => "200.00"
"net_movement" => "-200.00"
Пример другого результата из compare_startdate
и compare_enddate
"total_debit" => "0.00"
"total_credit" => "50.00"
"net_movement" => "-50.00"
Как запросить другой результат от compare_startdate
to compare_enddate
, чтобы суммировать результат startdate
и enddate
?
Ожидаемый результат
"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']));
Ответ №1:
Привет, друг, ты можешь заранее использовать 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();