$Orders=DB::table('orders')
->select(
DB::raw('sum(orders.total) as sum'),
DB::raw('YEAR(created_at) as data')
)
->where(function ($query) use ($date_to, $date_from) {
$query->where('orders.pay_status', 'paid')
})
->groupBy("data")
->get();
我想每年查看銷售統計資料,頂級代碼正確運行,但我想使用 Jalali 日期而不是 miladi,所以我需要更改created_at為 jalali
我想我必須使用我的功能而不是YEAR(created_at)或更改 groupBy功能
如果我可以使用verta(created_at)->yearinsted of YEAR(created_at),我認為可以解決問題
二手圖書館
uj5u.com熱心網友回復:
我認為你必須在 PHP 中回圈你的結果,因為你的庫不能與 Query Builder 一起使用。
foreach ($Orders as $i => $order) {
$newDate = Verta::parseFormat('Y', $order->data);
// add new date converted to your object - not sure about the lib, look at doc
$Orders[$i]->dateFormated = $newDate->year;
}
uj5u.com熱心網友回復:
您無法在查詢時將 created_at 的值轉換為 jalali,您需要將每個 jalaly 年份的開始和結束計算為 miladi
1399-01-01 -> 2020-03-01
1399-12-31 -> 2021-02-01
你可以把它們放在一個陣列中
$converted_dates =
[
'1397' => [
'xxx' ,
'xxx'
]
,'1398' => [
'xxx' ,
'xxxx'
]
,
'1399' => [
'2020-03-01' ,
'2021-02-01'
]
];
和
$stats = [];
foreach($converted_dates as $year=>$dates)
{
$stats[$year] = DB::table('orders')
->select(
DB::raw('sum(orders.total) as sum'),
DB::raw('YEAR(created_at) as data')
)
->whereBetween('created_at', $dates ))
->groupBy("data")
->get();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/322118.html
