diff --git a/beike/Shop/Http/Controllers/HomeController.php b/beike/Shop/Http/Controllers/HomeController.php index 75068b5a..d7893727 100644 --- a/beike/Shop/Http/Controllers/HomeController.php +++ b/beike/Shop/Http/Controllers/HomeController.php @@ -3,16 +3,15 @@ namespace Beike\Shop\Http\Controllers; use Beike\Models\Category; +use Beike\Shop\Repositories\CategoryRepo; use Plugin\Guangda\Seller\Models\Product; class HomeController extends Controller { public function index() { - $categories = Category::with('description')->where('active', 1)->get(); - $data = [ - 'categories' => $categories, + 'categories' => CategoryRepo::getTwoLevelCategories(), ]; return view('home', $data); diff --git a/beike/Shop/Http/Resources/CategoryItem.php b/beike/Shop/Http/Resources/CategoryItem.php index affba529..cad33a21 100644 --- a/beike/Shop/Http/Resources/CategoryItem.php +++ b/beike/Shop/Http/Resources/CategoryItem.php @@ -14,9 +14,14 @@ class CategoryItem extends JsonResource */ public function toArray($request) { - return [ + $item = [ 'id' => $this->id, - 'name' => $this->description->name ?? '' + 'name' => $this->description->name ?? '', + ]; + if ($this->children) { + $item['children'] = self::collection($this->children); + } + return $item; } } diff --git a/beike/Shop/Repositories/CategoryRepo.php b/beike/Shop/Repositories/CategoryRepo.php index cfacaada..fb96f88b 100644 --- a/beike/Shop/Repositories/CategoryRepo.php +++ b/beike/Shop/Repositories/CategoryRepo.php @@ -12,11 +12,27 @@ namespace Beike\Shop\Repositories; use Beike\Models\Category; +use Beike\Shop\Http\Resources\CategoryItem; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Collection; class CategoryRepo { + /** + * 获取所有分类 + */ + public static function getTwoLevelCategories() + { + $topCategories = Category::query() + ->from('categories as c') + ->with(['description', 'children.description']) + ->where('parent_id', 0) + ->get(); + + return CategoryItem::collection($topCategories); + } + + /** * 获取产品分类列表 * @@ -25,7 +41,7 @@ class CategoryRepo */ public static function list(array $filter = []) { - $keyword = $filter['keyword']??''; + $keyword = $filter['keyword'] ?? ''; $builder = Category::query()->with(['description']); if ($keyword) { // $builder->whereExists('name')