いずれかの列をキーと、雄弁にクエリ結果を組み合わせます

ジョーバン:

私は、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_CLOSEPRICEIQ_TRADES日付をキーと日付の範囲の行を、?

私が取得したい場合たとえば、IQ_CLOSEPRICEおよびIQ_TRADES範囲のため2020-01-212020-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をグループにこれらの件のデータをとdate

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

第三に、値は'IQ_CLOSEPRICE', 'IQ_TRADES'の列名ではありませんstock_history、列があるmnemonicの価値観。あなたがキーとしてそれらを取得したい場合は、使用することができますPluckの、このよう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=15304&siteId=1