Generar variantes
Comprar curso

46. Generar variantes


4 comentarios

Inicia sesión para comentar

Comentarios:

  • Rafael Diaz

    Rafael Diaz hace 2 semanas

    Hola admirado Victor. Mira que desde el momento en que agregamos la linea

    $this->generarVariantes();

    a la función 

    public function deleteOption($option_id) {
            $this->product->options()->detach($option_id);

            $this->product = $this->product->fresh();

            $this->generarVariantes();
    }
     

    Al eliminar la opción genera una variante vacia que queda ligada al id del producto. 

    ¿Cómo se puede solucionar esto? Gracias. 

    • Victor Arana Flores hace 2 semanas

      Hola Rafael, ese comportamiento es correcto, de hecho a partir del capitulo 120 si no me equivoco hacemos que ese sea el comportamiento por defecto.

    • Rafael Diaz hace 2 semanas

      bueno, revisaré entonces. Gracias Victor.

  • Marco A. Yanez

    Marco A. Yanez hace 7 meses

    Excelente Continuamos…

  • Alfonso Tacuba

    Alfonso Tacuba hace 9 meses

    Profe, cada que intento crear una nueva opcion me sale este error

    SQLSTATE[42S22]: Column not found: 1054 Unknown column 'description' in 'field list'

    insert into `feature_variant` (`created_at`, `description`, `feature_id`, `id`, `updated_at`, `value`, `variant_id`) values (2024-04-26 06:42:31, blanco, 0, 6, 2024-04-26 06:42:31, #ffffff, 8), (2024-04-26 06:42:31, Producto Chico, 1, 1, 2024-04-26 06:42:31, Chico, 8), (2024-04-26 06:42:31, Producto Chico, 2, 1, 2024-04-26 06:42:31, Chico, 8)


    Ya me vi los videos anteriores y esta todo perfecto, todo como tu lo tienes, no he hecho algo mas diferente, Unicamente comentando esta linea en especifico $variant->features()->attach($combinacion); de la funcion generarVariantes

        public function generarVariantes()

        {

            $features = $this->product->options->pluck('pivot.features');

            $combinaciones = $this->generarCombinaciones($features);

            $this->product->variants()->delete();

            foreach ($combinaciones as $combinacion) {

                $variant = Variant::create([

                    'product_id' => $this->product->id,

                ]);  
    $variant->features()->attach($combinacion);

            }

        }

    Si la comento si funciona, pero no relaciona

    • Victor Arana Flores hace 9 meses

      Hola, el error te dice que no le estás pasando el campo description. 

      Si no lo necesitas para la creación, entonces asegurate de que el campo acepte valores null. Si lo necesita y lo estás pasando, entonces asegurate de que hayas habilitado la asignacion masiva para ese campo.

    • Alfonso Tacuba hace 9 meses

      Si esta habilitada la asignacion masiva, lo hice tal cual tu lo ibas haciendo, y en ningun momento yo le estoy pasando el campo description ni tampoco creo lo hiciste tu, estoy siguendo paso a paso los videos, de hecho ya me regrese y este problema persiste

    • Royer Cesar Alanis Flores hace 3 meses

          public function  generarCombinaciones($arrays, $indice = 0, $combinacion = [])

          {


       

              if ($indice == count($arrays)) {


       

                  return [$combinacion];

              }


       

              $resultado = [];


       

              foreach ($arrays[$indice] as $item) {

                  $combinacionesTemporal = $combinacion;

                  $combinacionesTemporal[] = $item['id'];

                  $resultado = array_merge($resultado, $this->generarCombinaciones($arrays, $indice + 1, $combinacionesTemporal));

              }

              return  $resultado;

          }


      Esta línea es la que te esta fallando, tuve el mismo error:
         $combinacionesTemporal[] = $item['id'];

               

  • Jose Alejandro Sanchez

    Jose Alejandro Sanchez hace 10 meses

    también es sugerible agregarle para cuando actualice una información, que esta relacionado $table->foreignId('feature_id')->nullable()->constrained('features')->cascadeOnDelete()->cascadeOnUpdate(); aparte que se pone el id relación también se pone el nombre de la tabla con el que se relaciona, y así en todas las tablas, saludos! excelente curso 

    • Victor Arana Flores hace 10 meses

      Hola Jose, gracias por el aporte.