2017-04-20 4 views
0

productsであり、第二の1がsizesのResultSetマッパーやフォーマッタ

"products": [ 
          { 
           "category_id": 5, 
           "id": 5, 
           "code": "A", 
           "name": "Pizzabrot", 
           "description": "", 
           "product_prices": [ 
            { 
             "product_id": 5, 
             "price": 2.5, 
             "size_id": 15 
            }, 
            { 
             "product_id": 5, 
             "price": 3.5, 
             "size_id": 16 
            } 
           ] 
          }, 
          { 
           "category_id": 5, 
           "id": 6, 
           "code": "B", 
           "name": "Pizzabrot mit Knoblauch", 
           "description": "", 
           "product_prices": [ 
            { 
             "product_id": 6, 
             "price": 3, 
             "size_id": 15 
            }, 
            { 
             "product_id": 6, 
             "price": 4, 
             "size_id": 16 
            } 
           ] 
          }] 

"sizes": [ 
         { 
          "id": 15, 
          "name": "Klein", 
          "category_id": 5 
         }, 
         { 
          "id": 16, 
          "name": "Gro\u00df", 
          "category_id": 5 
         } 
        ] 

である私はそれをすべてのproduct_prices.size_idを交換したいのです名前からsizesコレクション

答えて

0

私はそれがおそらく関連付けられる方が良いでしょうProductPricesSizesを入力し、Productsで取得してください。その後

$query = $this->Sizes->find('list', [ 
    'keyField' => 'id', 
    'valueField' => 'name' 
]); 
$sizes = $query->toArray(); 

productsとそのproduct_pricesをループなど、何かの操作を行います。このような

これはいくつかの理由で、あなたのニーズに適合しない場合は、find('list')を使用してsizesを見つけることができる(Docsを参照してください) 。

$product_price->size_id = $sizes[$product_price->size_id]; 

最初の解決策をお選びください。 ;-)