From 5003f31d7cb18428453a9f67ac46396fdb8c20c3 Mon Sep 17 00:00:00 2001 From: "Fabian @ Blax Software" Date: Mon, 8 Dec 2025 09:23:19 +0100 Subject: [PATCH] A category traits methods --- src/Traits/HasCategories.php | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/Traits/HasCategories.php b/src/Traits/HasCategories.php index d937d44..f274862 100644 --- a/src/Traits/HasCategories.php +++ b/src/Traits/HasCategories.php @@ -134,6 +134,40 @@ trait HasCategories $this->categories()->sync($categories); } + /** + * Sync categories by name + * + * @param array $categories + */ + public function syncCategoriesByNames(array $categories): void + { + $categoryIds = []; + + foreach ($categories as $name) { + $category = config('shop.models.product_category')::firstOrCreate(['name' => $name]); + $categoryIds[] = $category->id; + } + + $this->categories()->sync($categoryIds); + } + + /** + * Sync categories by slug + * + * @param array $categories + */ + public function syncCategoriesBySlugs(array $categories): void + { + $categoryIds = []; + + foreach ($categories as $slug) { + $category = config('shop.models.product_category')::firstOrCreate(['slug' => $slug]); + $categoryIds[] = $category->id; + } + + $this->categories()->sync($categoryIds); + } + /** * Attach or create a category by name. */