Modèle d'article:
public function make(){
return $this->belongsTo(Make::class,'make_id','id');
}
Dans le modèle ItemMake:
public function item_makes(){
return $this->hasMany(ItemMake::class,'item_id','id');
}
J'ai besoin d'obtenir un tableau de toutes les marques en fonction de item_id. Comment y parvenir? Merci d'avance.
3 Réponses :
Essayez quelque chose comme ceci:
Item::findOrFail(1)
->with('item_makes.make')
->get()
->pluck('make')
->flatten()
->toArray()
Merci beaucoup monsieur :)
Vous pouvez également utiliser la méthode whereHas de Make model. De cette façon, vous n'aurez pas besoin d'aplatir ou de cueillir.
Je suis d'accord, mais vous auriez également besoin d'une sous-requête pour obtenir uniquement les marques appartenant à item_makes d'un élément avec l'ID donné.
Essayez la méthode wherehas quelque chose comme ceci
$makes = Make::whereHas('item_makes', function ($query) use($item_id) {
$query->where('item_id', $item_id);
})->get();
Cela a fonctionné pour moi.
$item = Item::findOrFail(1)
->item_makes()
->with('make')
->get()
->pluck('make')
->flatten()
->toArray();