2016-03-25 18 views
0

Ich habe 2 Modelle: Kategorien und Artikel. Ich weiß nicht, wie man foreach Schleife mit geschachteltem Feld bildet.Laravel 5.2 verschachtelt foreach

Kategorie Modell:

<?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'); 

    } 

Artikel Modell:

<?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'); 

    } 

} 

In meinem Controller Ich tue dies:

foreach($categories as $category) { 

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

} 

Ich brauche so etwas zu bekommen.

{ 
    "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", 
      } 
      ], 
    }, 
    ] 
} 

Helfen Sie mir, meinen Code zu verbessern.

Antwort

0

Versuchen Sie folgendes:

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

und var_dump nur $ Kategorien (keine Notwendigkeit für foreach-Schleife), um zu sehen, ob es das gewünschte Ergebnis ist