Je dois récupérer juste un tableau de id de la collection donnée, quelque chose comme [10,54,61,21, etc]. J'ai essayé aplatir , pluck , mais rien ne semble fonctionner séparément d'un foreach qui est quelque chose que je voudrais supprimer à cette étape.
// Model
class Children extends Eloquent {
public function directChildrens(){
return $this->hasMany('App\Children','father_id','id')->select('id','father_id');
}
public function childrens(){
return $this->directChildrens()->with('childrens');
}
}
// Controller
return $children->childrens()->get();
Comme prévu, cela fonctionne bien. Voici un résultat:
[{
"id": 10,
"father_id": 2,
"childrens": [
{
"id": 54,
"father_id": 10,
"childrens": [
{
"id": 61,
"father_id": 54,
"childrens": []
}
]
},
{
"id": 21,
"father_id": 10,
"childrens": []
}
]
}]
Comment puis-je effectuer un pluck ('id') de cette collection afin d'obtenir [10,54,61,21]?
Voici un algorithme récursif que vous pouvez ajouter à votre modèle Children
:
use Illuminate\Support\Collection;
public function getAllChildrenIds()
{
return Collection::make([$this->getKey()])
->merge(
$this->childrens->map->getAllChildrenIds()
);
}