David Ramirez
David Ramirez
Comparte:

Agragar Campos en array y guardar en DB

Hola buenas tardes,
Tengo este codigo:
<div class="form-group" >
        @foreach($apoyo->productos as $producto)
        <div class="row">
          <div class="col-md-4">
            <div class="form-group">
              <label for="cantidad">Cantidad</label>
              <input type="number" class="form-control" id="cantidad" placeholder="" name="productos[{{$producto->id}}][cantidad]" value="{{$producto->cantidad}}">
            </div>
          </div>


          <div class="col-md-4">
            <div class="form-group">
              <label for="unidad">unidad</label>
              <input type="text" class="form-control" id="unidad" placeholder="" name="productos[{{$producto->id}}][unidad]" value="{{$producto->unidad}}">
            </div>
          </div>

          <div class="col-md-4">
            <div class="form-group">
              <label for="Concepto">Concepto</label>
              <input type="text" class="form-control" id="concepto" placeholder="" name="productos[{{$producto->id}}][concepto]" value="{{$producto->concepto}}">
            </div>
          </div>
        </div>
        @endforeach

        <div id="products" ></div>
        <div class="row">
          <a href="javascript:;" id="add-new-product" class="btn btn-primary">Nuevo producto</a>
        </div>
      </div>  

En el jquery
<script>
let i = 1;
document.getElementById('add-new-product').onclick = function () {
    let template = `
    <div class="row">
    <div class="col-md-4">
      <div class="form-group">
         <label for="cantidad">Cantidad</label>
         <input type="text" class="form-control" id="cantidad" placeholder="" name="productos[${i}][cantidad]">
      </div>
    </div>
    
    <div class="col-md-4">
       <div class="form-group">
           <label for="unidad">unidad</label>
          <input type="text" class="form-control" id="unidad" placeholder="" name="productos[${i}][unidad]">
       </div>
     </div>

       <div class="col-md-4">
         <div class="form-group">
             <label for="Concepto">Concepto</label>
             <input type="text" class="form-control" id="concepto" placeholder="" name="productos[${i}][concepto]">
         </div>
       </div>
     </div>
    </div>
    `;

    let container = document.getElementById('products');
    let div = document.createElement('div');
    div.innerHTML = template;
    container.appendChild(div);

    i++;
}
</script>

En mi modelo parte update agregue 
$productos = [];
        $count = count($request->get('productos'));

        for($a =0 ; $a < $count ; $a++ ) {
          foreach ($request->get('productos') as $id => $value) {
            $productos[] =  Producto::find($id)
                            ? $id
                            : Producto::create($request->get('productos')[$a])->id; 
          }

        } 

        $apoyo->productos()->sync($productos);

me aparece error Undefined offset: 0
como se darán cuenta al editar un ítem me edita el numero 1 y así cada que aumente 1 item de mas.
De momento no se ni en donde empieza el problema o termina.
Agradezco su colaboración.