From: fomichev Date: Wed, 22 Apr 2026 07:46:39 +0000 (+0300) Subject: fix: фильтрация категорий Букет/Сборка/Сервис после кэша X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=44e73f8185743d4d076f657e1a5577e6f6eaa748;p=erp24_rep%2Fyii-erp24%2F.git fix: фильтрация категорий Букет/Сборка/Сервис после кэша Перенесена фильтрация исключённых категорий из SQL-запроса внутри кэша в PHP-фильтр после getOrSet — работает немедленно независимо от состояния кэша. Co-Authored-By: Claude Sonnet 4.6 --- diff --git a/erp24/services/ProductMappingService.php b/erp24/services/ProductMappingService.php index 42eabbd5..a63f5300 100644 --- a/erp24/services/ProductMappingService.php +++ b/erp24/services/ProductMappingService.php @@ -134,15 +134,14 @@ class ProductMappingService */ public function getCascadeFilters(?string $category = null, ?string $subcategory = null): array { - $cacheKey = 'pm_cascade_filters_v2_' . md5((string)$category . '|' . (string)$subcategory); + $cacheKey = 'pm_cascade_filters_' . md5((string)$category . '|' . (string)$subcategory); - return Yii::$app->cache->getOrSet($cacheKey, function () use ($category, $subcategory) { + $data = Yii::$app->cache->getOrSet($cacheKey, function () use ($category, $subcategory) { $categories = (new Query()) ->select('category') ->from('products_1c_nomenclature') ->where(['IS NOT', 'category', null]) ->andWhere(['!=', 'category', '']) - ->andWhere(['not in', 'category', self::EXCLUDED_CATEGORIES]) ->distinct() ->orderBy('category') ->column(); @@ -175,6 +174,14 @@ class ProductMappingService return compact('categories', 'subcategories', 'species'); }, self::CACHE_DURATION); + + // Фильтруем исключённые категории уже после кэша — работает даже с устаревшим кэшем + $data['categories'] = array_values(array_filter( + $data['categories'], + static fn(string $cat): bool => !in_array($cat, self::EXCLUDED_CATEGORIES, true) + )); + + return $data; } /**