$pages = Page::all();
$generator = function (Collection $level, $prefix = '') use ($pages, &$generator) {
// here we are sorting by 'id', but you can sort by another field
foreach ($level->sortBy('id') as $item) {
// yield a single item
yield $item;
//$item->level = $level->count();
if($prefix != '')
{
$item->title = $prefix . ' ' . $item->title;
}
// continue yielding results from the recursive call
yield from $generator($pages->where('parent_id', $item->id ), $prefix . '— ');
}
};
$results = LazyCollection::make(function () use ($pages, $generator) {
// yield from root level
$prefix = '';
yield from $generator($pages->where('parent_id', null), $prefix);
})->flatten()->collect();
return $results->toJson();
$pages = Page::all();
$generator = function (Collection $level, $prefix = '') use ($pages, &$generator) {
// here we are sorting by 'id', but you can sort by another field
foreach ($level->sortBy('id') as $item) {
// yield a single item
yield $item;
//$item->level = $level->count();
if($prefix != '')
{
$item->title = $prefix . ' ' . $item->title;
}
// continue yielding results from the recursive call
yield from $generator($pages->where('parent_id', $item->id ), $prefix . '— ');
}
};
$results = LazyCollection::make(function () use ($pages, $generator) {
// yield from root level
$prefix = '';
yield from $generator($pages->where('parent_id', null), $prefix);
})->flatten()->collect();
return $results->toJson();