From 44e73f8185743d4d076f657e1a5577e6f6eaa748 Mon Sep 17 00:00:00 2001 From: fomichev Date: Wed, 22 Apr 2026 10:46:39 +0300 Subject: [PATCH] =?utf8?q?fix:=20=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80?= =?utf8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BA=D0=B0=D1=82=D0=B5=D0=B3=D0=BE?= =?utf8?q?=D1=80=D0=B8=D0=B9=20=D0=91=D1=83=D0=BA=D0=B5=D1=82/=D0=A1=D0=B1?= =?utf8?q?=D0=BE=D1=80=D0=BA=D0=B0/=D0=A1=D0=B5=D1=80=D0=B2=D0=B8=D1=81=20?= =?utf8?q?=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=BA=D1=8D=D1=88=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Перенесена фильтрация исключённых категорий из SQL-запроса внутри кэша в PHP-фильтр после getOrSet — работает немедленно независимо от состояния кэша. Co-Authored-By: Claude Sonnet 4.6 --- erp24/services/ProductMappingService.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) 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; } /** -- 2.39.5