Comment adhérer à des modèles dans Laravel 5?

J'ai trois tables, avec une structure comme celle-ci (ils sont dans une DB MySQL) connecté à mon Laravel 5 de l'API avec Éloquent modèles:

# build_sets table
| id | title | description |

# parts table
| id | title | description | color |

# build_set_parts table
| id | build_set_id | part_id | amount | special_info |

Sur le moment, je fais une requête comme ceci:

$buildSets = array();

foreach(BuildSet::with('parts')->get() as $buildSet) {
    $temp = json_decode($buildSet);

    $temp->parts = $buildSet->parts;

    $buildSets[] = $temp;
}

return $buildSets;

Et mes modèles ressembler à ceci:

class BuildSet extends Model
{
    protected $table = 'build_sets';
    protected $hidden = ['created_at', 'updated_at'];

    public function parts()
    {
        return $this->hasMany('App\Models\BuildSetPart');
    }
}

class Part extends Model
{
    protected $table = 'parts';
    protected $hidden = ['id', 'created_at', 'updated_at'];

    public function buildSets()
    {
        return $this->hasMany('App\Models\BuildSet');
    }
}

class BuildSetPart extends Model
{
    protected $table = 'build_set_parts';
    protected $hidden = ['id', 'build_set_id', 'part_id', 'created_at', 'updated_at'];

    public function buildSet()
    {
        return $this->belongsTo('App\Models\BuildSet');
    }

    public function part()
    {
        return $this->belongsTo('App\Models\Part');
    }
}

- Je obtenir un résultat de ce genre (réponse JSON):

[
  {
    "id": 1,
    "title": "Build set 1",
    "description": "This is a small build set.",
    "parts": [
      {
        "amount": 150,
        "special_info": ""
      },
      {
        "amount": 400,
        "special_info": "Extra strong"
      },
      {
        "amount": 25,
        "special_info": ""
      }
    ]
  },
  {
    "id": 2,
    "title": "Build set 2",
    "description": "This is a medium build set.",
    "parts": [
      {
        "amount": 150,
        "special_info": ""
      },
      {
        "amount": 400,
        "special_info": "Extra strong"
      },
      {
        "amount": 25,
        "special_info": ""
      },
      {
        "amount": 25,
        "special_info": ""
      },
      {
        "amount": 25,
        "special_info": ""
      }
    ]
  }
]

Comme vous pouvez le voir, je suis absent le titre, de description et de la couleur dans les "parties" de la matrice de ce qui est inclus dans l'ensemble de compilation.
Donc ma question est, comment puis-je ajouter le titre et la couleur de ma réponse? Puis-je le faire en utilisant Éloquent modèles, ou dois-je faire mes propres DB requête où je reçois tous les ensembles de compilation et puis réitérer et d'obtenir toutes les pièces et de construire ensemble des parties et fusionner les fichiers qui en résultent et l'ajouter à l'ensemble de compilation.

Un a une bonne solution qui va me donner des éléments dans les pièces tableau formaté comme ceci:

[
  {
    "title": "Part 1",
    "color": "Red",
    "amount": 25,
    "special_info": ""
  },
  {
    "title": "Part 2",
    "color": "Green",
    "amount": 75,
    "special_info": ""
  }
]

OriginalL'auteur KungWaz | 2015-04-10