我想知道是否有任何方法可以使用Laravel雄辩的方法来获取按日期分组的数据的第一个和最后一个值。 我需要将数据放在TradingView蜡烛图上,并且它需要特定的格式,如下所示:
{
t:'unix timestamps',
v:'volumes',
h:'higher prices',
l:'lower prices',
o:'open prices',
c:'close prices'
}
我的代码是:
$trans = Transacoes::where('created_at', '>=', $end->subMinutes($minute))
->groupBy('t')
->orderBy('t', 'DESC')
->get([
DB::raw('DATE_FORMAT(created_at, "%Y-%m-%d %H:%i") as t'),
DB::raw('sum(amount) as "v"'),
DB::raw('max(`price`) as h'),
DB::raw('min(`price`) as l'),
DB::raw('first(`price`) as o'),
DB::raw('last(`price`) as c'),
])
->toArray();
我知道对于MySQL不存在first()
和last()
函数,但是我这样写,所以更容易理解我要做什么。
我的数组当前正在返回:
{
"t": "2018-11-13 12:20",
"v" : "0.04536078",
"h" : "24249.98",
"l": "24249.97"
},
{...},
我需要包括每个阵列的开盘价和收盘价,例如:在对应于12:20的那一刻,有4笔交易,我需要知道哪个是第一个交易,哪个是这时最后一个,并将其包含在索引为“ o”和“ c”的数组的每个元素中
答案 0 :(得分:0)
$first = array_key_exists(0,$trans)?$trans[0]:"";
$last= array_key_exists(count($trans)-1,$trans)?$trans[count($trans)-1]:"";
I assume you have $trans
as an array