У меня есть MySQL таблица с именем stock_history
, которая выглядит примерно так:
id | date | mnemonic | value
---------------------------------------
1 | 2020-01-21 | IQ_CLOSEPRICE | 147.15
2 | 2020-01-22 | IQ_CLOSEPRICE | 149.31
3 | 2020-01-23 | IQ_CLOSEPRICE | 150.11
4 | 2020-01-21 | IQ_TRADES | 323
5 | 2020-01-22 | IQ_TRADES | 542
6 | 2020-01-22 | IQ_TRADES | 712
7 | 2020-01-21 | IQ_PAYOUTS | 23
Возможно ли построить запрос, который бы возвратил IQ_CLOSEPRICE
и IQ_TRADES
строк для диапазона дат с указанием даты?
Например, если я хочу получить IQ_CLOSEPRICE
и IQ_TRADES
для диапазона 2020-01-21
до 2020-01-22
, он должен вернуть что-то вроде:
[
'2020-01-21' => [
'IQ_CLOSEPRICE' => 147.15,
'IQ_TRADES' => 323
],
'2020-01-22' => [
'IQ_CLOSEPRICE' => 149.31,
'IQ_TRADES' => 542
],
]
Конечно, легко вернуть данные в их естественной структуре, например:
StockHistory::where('date', '>=', '2020-01-21')
->where('date', '<=', '2020-01-22')
->whereIn('mnemonic', ('IQ_CLOSEPRICE', 'IQ_TRADES')
->get();
Но я бы хотел, чтобы Eloquent возвратил вышеуказанную структуру, чтобы избавить меня от циклического перемещения по всему списку. после получения результатов запроса, если это возможно. Если нет, то мы можем обойтись без указания даты, но было бы здорово по крайней мере поместить IQ_CLOSEPRICE и IQ_TRADES в один и тот же элемент массива, например:
[
[
'IQ_CLOSEPRICE' => 147.15,
'IQ_TRADES' => 323,
'date' => '2020-01-21'
],
[
'IQ_CLOSEPRICE' => 149.31,
'IQ_TRADES' => 542
'date' => '2020-01-22'
],
]