【问题标题】:How to insert multiple data from html to database using laravel如何使用 laravel 将多个数据从 html 插入数据库
【发布时间】:2015-01-20 16:04:18
【问题描述】:

我有这个动态表,这是我的问题的预览:Link to image

<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:这个视图就像一个购物车

提前致谢!

【问题讨论】:

  • 所以一切正常,只是它试图将其插入错误的表中?
  • 我需要将该数据保存到名为 detalle_compras 的不同表中...

标签: php jquery laravel dynamic shopping


【解决方案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 处理它们到服务器。但是,使用此解决方案,您无需更改太多代码即可使其正常工作。

【讨论】:

  • @lukasgeiter 是对的,我认为您并没有完全解释一切。如果此表中存在列,则您正在设置所有值并保存,它们将显示在 db.xml 中。我会测试上述所有条件是否正确。
  • @user3654532 存储每个添加的输入是什么意思?我看到了您的商店功能,它将输入值写入模型并保存。不工作怎么办?
  • 在我看来,我应该这样做:将 Fecha、No factura、proveedor、persona de contacto、total、descuento、itbms、total bruto 存储到一个名为 compras 的表中(这适用于控制器)和我的模型名为“Compra”,带有受保护的 $table = 'compras。' 2.我的问题是我应该将每个添加的行与值存储到另一个名为“detalle_compras”的表中:“compras”中的 sexo、color、raza、tipo、precio x kg、peso、monto 和 id_compra。但我不知道如何保存。
  • @user3654532 您想在添加时保存每一行还是一次保存所有行?
  • @lukasgeiter 是的,所有行一次
猜你喜欢
  • 2017-06-07
  • 2020-03-31
  • 2021-09-10
  • 2020-08-26
  • 2018-08-06
  • 2021-01-19
  • 2017-04-03
  • 1970-01-01
  • 2013-10-17
相关资源
最近更新 更多