[10,54,61,21、etc]のように、指定したコレクションからidの配列のみを取得する必要があります。 flatten 、 pluck を試しましたが、 foreach 以外は何も機能しないようですこれは、このステップで削除したいものです。
// 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();
予想通り、正常に動作します。ここに結果:
[{
"id": 10,
"father_id": 2,
"childrens": [
{
"id": 54,
"father_id": 10,
"childrens": [
{
"id": 61,
"father_id": 54,
"childrens": []
}
]
},
{
"id": 21,
"father_id": 10,
"childrens": []
}
]
}]
[10,54,61,21]を取得するために、このコレクションの pluck( 'id')を実行するにはどうすればよいですか?
Children
モデルに追加できる再帰アルゴリズムは次のとおりです。
use Illuminate\Support\Collection;
public function getAllChildrenIds()
{
return Collection::make([$this->getKey()])
->merge(
$this->childrens->map->getAllChildrenIds()
);
}