Как вставить несколько данных из HTML в базу данных с помощью laravel

у меня есть эта динамическая таблица, это предварительный просмотр моей проблемы: Ссылка на изображение

<div class="col-sm-7">
<h4>Estado:</h4>
<div class="row">
<div class="col-xs-12">
<div class="table-responsive">
<table class="table preview-table">
<thead>
<tr>
<th>Sexo</th>
<th>Color</th>
<th>Raza</th>
<th>Tipo</th>
<th>Precio x kg</th>
<th>Peso</th>
<th>Monto</th>
</tr>
</thead>
<tbody></tbody> <!-- preview content goes here-->
</table>
</div>
</div>
</div>

Я добавляю строки с этим Jquery

$(function(){
var cont = 1;
$('.preview-add-button').click(function(){ //Introduce los nuevos campo
var form_data = {};
form_data["sexo"] = $('.payment-form #sexo option:selected').text();
form_data["color"] = $('.payment-form input[name="color"]').val();
form_data["raza"] = $('.payment-form #raza option:selected').text();
form_data["tipo"] = $('.payment-form #tipo option:selected').text();
form_data["precio"] = $('.payment-form input[name="precio"]').val();
form_data["peso"] = $('.payment-form input[name="peso"]').val();
form_data["monto"] = parseFloat($('.payment-form input[name="precio"]').val()*$('.payment-form input[name="peso"]').val()).toFixed(2);
form_data["remove-row"] = '<span class="glyphicon glyphicon-remove"></span>';
var row = $('<tr></tr>');
$.each(form_data, function( type, value ) {
$('<td class="input-'+type+'"><input type="hidden" class="form-control" name="data-'+type+'" value="'+value+'"></td>').html(value).appendTo(row);
cont++;
});
$('.preview-table > tbody:last').append(row);
calc_total();
$('#sexo').val('');
$('#color').val('');
$('#raza').val('');
$('#tipo').val('');
$('#precio').val('');
$('#peso').val('');
}); });

Мой контроллер

public function getCreate()
{
$client_options = DB::table('cliente_proveedores')->orderBy('nombre', 'asc')->where('proveedor', '=', 1)->where('activo', '=', 1)->lists('nombre','id');
$tipos_ganados = DB::table('tipos_ganados')->orderBy('tipo', 'asc')->where('activo', '=', 1)->lists('tipo','id');
$razas = DB::table('razas')->orderBy('raza', 'asc')->where('activo', '=', 1)->lists('raza','id');
return View::make('compras.create', array('client_options' => $client_options, 'tipos_ganados' => $tipos_ganados, 'razas' => $razas));
}/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store()
{
$compra = new Compra;
$compra->fecha = Input::get('fecha');
$compra->num_factura = Input::get('num_factura');
$compra->id_proveedor = Input::get('proveedor');
$compra->nombre_vendedor = Input::get('nombre_vendedor');
$compra->total = Input::get('total');
$compra->descuento = Input::get('desc');
$compra->itbms = Input::get('itbms');
$compra->total_bruto = Input::get('total_bruto');
if($compra->save()){
$detalle = new DetalleCompra();
$detalle->id_compras = Compra::orderBy('id','DESC')->get();
$detalle->id_ganado = Input::get('num_factura');
$detalle->precio_kilo = Input::get('data-precio');
$detalle->peso = Input::get('data-peso');
$detalle->precio_bruto = Input::get('data-monto');
$detalle->save();
}
if($compra->save()){
Session::flash('message','Guardado Correctamente');
Session::flash('class','success');
}else{
Session::flash('message','Ha ocurrido un error');
Session::flash('class','danger');
}
return Redirect::to('/compras');
}

Как я могу вставить их в другую таблицу? … должен ли я использовать DB :: table (‘detalle_compras’) -> insert (); или следует заменить их входами

PD: этот вид похож на корзину

Заранее спасибо!

1

Решение

Во-первых, вы можете отправить несколько значений для одного и того же имени, используя array[] обозначение как атрибут имени. Как показано здесь:

<input type="text" name="test[]" />
<input type="text" name="test[]" />
<input type="text" name="test[]" />

Если вы получите данные на сервере, это может выглядеть так:

array('one', 'two', 'three');

(один, два, три значения, введенные в три поля ввода)

Как мы можем использовать это?

Для каждой строки добавьте поля ввода с именем и [], Например name="data-peso[]", Убедитесь, что эти строки внутри форма, чтобы они действительно были представлены с остальными.

Затем в вашем контроллере. Используйте нормальный Input::get() получить значения. Вы можете использовать любое из значений, потому что их должно быть одинаковое количество, чтобы получить количество строк и выполнить цикл по каждой строке, чтобы извлечь значения и сохранить модель.

for($i = 0; $i < count(Input::get('data-peso')); $i++){
$detalle = new DetalleCompra();
$detalle->peso = Input::get('data-peso')[$i];
$detalle->precio_bruto = Input::get('data-monto')[$i];
// the other values...
$detalle->save();
}

Это должно быть уже.

Позвольте мне закончить, сказав, что есть другие способы сделать то же самое. Например, вы можете использовать JavaScript для обработки строк на стороне клиента и их использования json на сервер. Однако с этим решением вам не нужно менять слишком много кода, чтобы он работал.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]