열 중 하나에 의해 키가 웅변 쿼리 결과를 결합

조반 :

나는 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_CLOSEPRICEIQ_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();

그러나, 나는 가능하면 쿼리 결과를받은 후 전체 목록을 통해 반복에서 저를 저장하는 위의 구조를 반환하는 웅변을하고 싶습니다. 그렇지 않으면, 우리는 날짜를 기준으로 키 입력없이 할 수 있지만 같은 같은 배열 요소, 적어도 풋 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'
    ],
]
Tsakhog :

첫째, 코드 뭔가 잘못은 whereIn사용 배열에 시도 :

->whereIn('mnemonic', ['IQ_CLOSEPRICE', 'IQ_TRADES'])

둘째는 모음의 사용 GROUPBY를 그룹에이 datas을 함께 date:

->get()->groupBy('date');

셋째, 값 'IQ_CLOSEPRICE', 'IQ_TRADES'의 열 이름이 아닌 stock_history, 열 존재 mnemonic의 값. 당신이 키로를 얻고 싶은 경우에, 당신은 사용할 수 있습니다 뽑는다 는 다음과 같이 mnemonic의 가치, 열쇠가 될 것이며, value의 값은 값이됩니다 :

->pluck('value', 'mnemonic'); // return ['IQ_CLOSEPRICE' => 147.15,...]

같이 당신의 코드를 필요가 그래서 :

StockHistory::where('date', '>=', '2020-01-21')
    ->where('date', '<=', '2020-01-22')
    ->whereIn('mnemonic', ['IQ_CLOSEPRICE', 'IQ_TRADES'])
    ->get()
    ->groupBy('date')
    ->map(function($item) {
        return $item->pluck('value', 'mnemonic');
    })->toArray();

추천

출처http://43.154.161.224:23101/article/api/json?id=15303&siteId=1