diff --git a/app/Helpers/function.php b/app/Helpers/function.php index e18d8f9..43383b8 100644 --- a/app/Helpers/function.php +++ b/app/Helpers/function.php @@ -226,6 +226,7 @@ function getArticlesByPosition($postion) * @Date: 2021/12/1 13:28 * @param $category_id * @param int $take + * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection */ function getResumesByCate($category_id, $take = 8) { @@ -236,3 +237,24 @@ function getResumesByCate($category_id, $take = 8) ->get(); } + +/** + * Notes: 获取所有下级 + * + * @Author: 玄尘 + * @Date: 2022/8/19 17:24 + * @param $array + * @param $categoryId + * @return array + */ +function getAllChild($categories, $categoryId) +{ + $arr = array(); + foreach ($categories as $category) { + if ($category['parent_id'] == $categoryId) { + $arr[] = $category['id']; + $arr = array_merge($arr, getAllChild($categories, $category['id'])); + }; + }; + return $arr; +} \ No newline at end of file diff --git a/app/Http/Controllers/CategoryController.php b/app/Http/Controllers/CategoryController.php index 1b3ab69..9c2cbf4 100644 --- a/app/Http/Controllers/CategoryController.php +++ b/app/Http/Controllers/CategoryController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use App\Models\Advert; +use App\Models\Article; use App\Models\Category; class CategoryController extends Controller @@ -32,11 +33,26 @@ class CategoryController extends Controller $pageCount = 100; } - $articles = $category->relations(Category::TYPE_ARTICLE) - ->where('status', 1) - ->latest('sort') - ->latest('created_at') - ->paginate($pageCount); + if ($category->id == 37) { + $categories = Category::get(); + $children = array_merge([$category->id], getAllChild($categories, $category->id)); + + $articles = Article::query() + ->whereHas('categories', function ($q) use ($children) { + $q->whereIn('id', $children); + }) + ->where('status', 1) + ->latest('sort') + ->latest('created_at') + ->paginate($pageCount); + } else { + $articles = $category->relations(Category::TYPE_ARTICLE) + ->where('status', 1) + ->latest('sort') + ->latest('created_at') + ->paginate($pageCount); + } + $parent = $category; if (! $category->getChildrenCount() && $category->parent) {