Procházet zdrojové kódy

save-variants 接口 获取不到option values和无法删除option问题

fogwind před 6 měsíci
rodič
revize
888ff46586

+ 14 - 10
packages/Longyi/Core/src/Helpers/FlexibleVariantOption.php

@@ -160,18 +160,22 @@ class FlexibleVariantOption
             foreach ($option->values as $value) {
                 // Check if this value is used in any saleable variant
                 $isAvailable = $variants->filter(function ($variant) use ($value) {
-                    return $variant->isSaleable() && 
-                           $variant->values->contains('id', $value->id);
+                    return $variant->values->contains('id', $value->id);
+                    // return $variant->isSaleable() && 
+                    //        $variant->values->contains('id', $value->id);
                 })->isNotEmpty();
+                if($isAvailable) {
+                    $optionData['values'][] = [
+                        'id' => $value->id,
+                        'label' => $value->label,
+                        'code' => $value->code,
+                        'position' => $value->position,
+                        'meta' => $value->meta,
+                        'is_available' => $isAvailable,
+                    ];
 
-                $optionData['values'][] = [
-                    'id' => $value->id,
-                    'label' => $value->label,
-                    'code' => $value->code,
-                    'position' => $value->position,
-                    'meta' => $value->meta,
-                    'is_available' => $isAvailable,
-                ];
+                }
+                
             }
 
             $result[] = $optionData;

+ 13 - 7
packages/Longyi/Core/src/Http/Controllers/Admin/FlexibleVariantController.php

@@ -214,13 +214,19 @@ class FlexibleVariantController extends Controller
      */
     public function getProductOptions(int $productId): JsonResponse
     {
-        $this->initProduct($productId);
-        $options = $this->_product->options()
-            ->with('values', function ($query) {
-                $query->whereHas('variants', function ($relation) {
-                    $relation->whereIn($relation->getModel()->getTable().'.id', $this->_product->variants()->pluck('id'));
-                });
-            });
+
+
+        $options=$this->flexibleVariantHelper->getAvailableOptions($productId);
+        // $this->initProduct($productId);
+        // $options = $this->_product->options()
+        //     ->with('values', function ($query) {
+        //         $query->whereHas('variants', function ($relation) {
+        //             // dd($relation->getModel()->getTable());exit;
+        //             $relation->whereIn($relation->getModel()->getTable().'.id', $this->_product->variants()->pluck('id'));
+        //         });
+        //     })->toSql();
+
+
         return response()->json([
             'success' => true,
             'data' => $options,