Merhabalar bir sorunum var. Elimde ilanların kategori idleri var bana bu kategori idlerinin ağaç yapısı şeklinde gelmesini istiyorum ama bir türlü yapamadım. Aşağıdaki şekilde yapınca da ekran çıktısı ekteki gibi oluyor.
https://pasteboard.co/okyGAfiyCjEL.png
$categories = $categories->map(function (Categories $category) {
return \Cache::remember('childAllCategoryRecursive-' . $category->id, 3600 * 12, function () use ($category) {
$array = collect(Categories::getChildToAllParentIds($category->id))->reverse();
$childCategories = Categories::whereIn('id', $array->pluck('id'))->get()->keyBy('id')->toArray();
$array->each(function ($id, $key) use ($childCategories, &$array) {
$childCategory = $childCategories[$id->id];
if (isset($array[$key]) && is_array($array[$key])) {
$array[$key] = array_merge($array[$key], $childCategory);
} else {
$array[$key] = $childCategory;
}
if (isset($array[$key - 1]) && is_array($array[$key - 1])) {
$array[$key - 1] = array_merge($array[$key - 1], ['childs' => [$array[$key]]]);
} else {
$array[$key - 1] = ['childs' => [$array[$key]]];
}
});
return $array[0];
});
});
$categories->transform(function ($row) use (&$deleteIndex, &$categories) {
$mergeArray = $categories->where('id', $row['id']);
$mergeArray->each(function ($mr) use (&$row) {
$row['childs'] = array_merge($row['childs'] ?? [], $mr['childs'] ?? []);
});
$deleteIndex = array_merge($deleteIndex, array_slice($mergeArray->keys()->toArray(), 1));
return $row;
});
$this->categories = $categories->forget($deleteIndex);