Laravelに詳しい方助けてください!
表題の通りLaravelのコレクションで多次元配列の辞書データを作成したいです。
具体的に説明すると、まず下記のようなテーブルが存在するとします。
|id|product_id|date|type|count|
|:--|:--:|--:|
|1|1001|2018-08-01|in|11|
|2|1002|2018-08-02|in|3|
|3|1003|2018-08-03|in|4|
|4|1002|2018-08-04|out|5|
|5|1001|2018-08-05|in|8|
|6|1002|2018-08-06|out|9|
|7|1003|2018-08-07|in|10|
品物の入出庫データのようなものをイメージしていただくとわかりやすいかと思います。
便宜上idのカラムが存在しますが、このテーブルは「product_id、date、type」の3つのカラムの複合キーでこの3つの組み合わせが重複することはありません。
このテーブルからデータを取得して連想配列の辞書データを作りたいのですがうまくいきません。
色々調べてみて下記のコードを試してみたのですが、
php
1 2 3$dictionary = App\HogeTable 4 ->whereDate('date', '>=','2018-08-01') 5 ->whereDate('date', '<=','2018-08-31') 6 ->get()->mapToDictionary(function ($item) { 7 return [ 8 $item['date'] => [ 9 $item['product_id'] => [ 10 $item['type'] => $item['count'] 11 ] 12 ] 13 ]; 14 })->toArray(); 15
この$dictionaryを出力すると、下記のような形で、date以下にproduct_idがキーとなる配列が作成されません。
php
1array (size=31) 2 '2018-08-29' => 3 array (size=30) 4 0 => 5 array (size=1) 6 1261 => 7 array (size=1) 8 ... 9 1 => 10 array (size=1) 11 1259 => 12 array (size=1) 13 ... 14 2 => 15 array (size=1) 16 1258 => 17 array (size=1) 18 ... 19 3 => 20 array (size=1) 21 1265 => 22 array (size=1)
最終的に$dictionary[date][product_id][type]で任意のcountを取得できるような配列を生成したいのですが、うまい方法はないでしょうか?
どなたかお力添えいただけますと助かります!
参考URL
https://qiita.com/nunulk/items/ef82a35aa2b75200afa3#52-maptodictionary-55
Laravelのバージョンは5.5です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/06 04:55