2016-03-25 37 views
0

私は2つのモデルを持っています:カテゴリーとアイテム。私は入れ子配列でforeachループを作る方法を知らない。Laravel 5.2ネストされたforeach

カテゴリーモデル:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Category extends Model 
{ 

    public static function getAll() { 

     $categories= Category::orderBy('id', 'ASC')->get(); 

     return $categories; 

    } 

    public function items() { 

     return $this->hasMany('App\Item', 'category_id'); 

    } 

項目モデル:私はこれをやっている私のコントローラで

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Item extends Model 
{ 

    public static function getAll() { 

     $items = Item::orderBy('id', 'DESC')->get(); 

     return $items; 

    } 

    public function category() { 

     return $this->belongsTo('App\Category'); 

    } 

} 

foreach($categories as $category) { 

    $data['categories'][] = [ 
     'id' => $category ->id, 
     'name' => $category ->name, 
     'items_count' => ? 
    ]; 

} 

私はこのような何かを取得する必要があります。

{ 
    "categories": [ 
    { 
     "id": 1, 
     "name": "cat_name_1", 
     "items_count": 6, 
     "items": [ 
      { 
      "id": "1", 
      "name": "item_name", 
      "category_id": "1", 
      } 
      ], 
    }, 
    { 
     "id": 2, 
     "name": "cat_name_1", 
     "items_count": 7, 
     "items": [ 
      { 
      "id": "2", 
      "name": "item_name", 
      "category_id": "2", 
      } 
      ], 
    }, 
    { 
     "id": 3, 
     "name": "cat_name_1", 
     "items_count": 4, 
     "items": [ 
      { 
      "id": "3", 
      "name": "item_name", 
      "category_id": "3", 
      } 
      ], 
    }, 
    ] 
} 

コードを改善するお手伝いをしてください。

答えて

0

このお試しください:

$categories = Category::orderBy('id', 'ASC')->with('items')->get(); 

をし、ちょうどそれがあなたの望ましい結果

であるかどうかを確認するために$カテゴリ(foreachループは必要ありません)のvar_dump