Comparte:
Agragar Campos en array y guardar en DB
Hola buenas tardes,
Tengo este codigo:
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.
Creo que eso te esta generando un problema al tratar de manejar los modelos.
Laravel tiene una serie de herramientas que te ayudan mucho con eso. Lo ideal es que tu controlador maneje los métodos de cada CRUD y tomando la estructura del objeto que definiste en tu modelo. Intenta revisar el curso gratis de Laravel desde 0 cuando, creo que te ayudará a estructurar mejor las operaciones.