diff --git a/beike/Admin/Http/Controllers/CategoryController.php b/beike/Admin/Http/Controllers/CategoryController.php index 46f48dbd..3ec1da24 100644 --- a/beike/Admin/Http/Controllers/CategoryController.php +++ b/beike/Admin/Http/Controllers/CategoryController.php @@ -2,7 +2,6 @@ namespace Beike\Admin\Http\Controllers; - use Beike\Models\Category; use Illuminate\Http\Request; use Beike\Repositories\CategoryRepo; @@ -10,7 +9,6 @@ use Beike\Admin\Services\CategoryService; use Beike\Admin\Http\Requests\CategoryRequest; use Beike\Admin\Http\Resources\CategoryResource; - class CategoryController extends Controller { protected string $defaultRoute = 'categories.index'; @@ -48,6 +46,21 @@ class CategoryController extends Controller return $this->save($request, $category); } + + /** + * 删除分类 + * @param Request $request + * @param Category $category + * @return array + * @throws \Exception + */ + public function destroy(Request $request, Category $category): array + { + CategoryRepo::delete($category); + return json_success('删除成功'); + } + + public function name(int $id) { $name = CategoryRepo::getName($id); diff --git a/beike/Models/Category.php b/beike/Models/Category.php index 0ac115d7..6175956b 100644 --- a/beike/Models/Category.php +++ b/beike/Models/Category.php @@ -39,4 +39,9 @@ class Category extends Base { return $this->hasMany(CategoryPath::class); } + + public function productCategories(): HasMany + { + return $this->hasMany(ProductCategory::class); + } } diff --git a/beike/Repositories/CategoryRepo.php b/beike/Repositories/CategoryRepo.php index 8850d1f6..a4fb5e3c 100644 --- a/beike/Repositories/CategoryRepo.php +++ b/beike/Repositories/CategoryRepo.php @@ -98,6 +98,24 @@ class CategoryRepo } + /** + * 删除产品分类 + * @throws \Exception + */ + public static function delete($category) + { + if (is_int($category)) { + $category = Category::query()->findOrFail($category); + } elseif (!($category instanceof Category)) { + throw new \Exception('invalid category'); + } + $category->descriptions()->delete(); + $category->paths()->delete(); + $category->productCategories()->delete(); + $category->delete(); + } + + public static function getName($id) { $category = Category::query()->find($id);