From a818c0c9f7b004a5d982279456322d24bd8a40ad Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Fri, 12 Aug 2022 15:12:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Http/Controllers/CategoryController.php | 17 +++++++++++++++-- beike/Models/Category.php | 5 +++++ beike/Repositories/CategoryRepo.php | 18 ++++++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) 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);