laravel插入多个输入

时间:2015-12-29 13:41:07

标签: php html mysql laravel

我在laravel 5.1中遇到问题,插入了多个输入介绍DB。

我为多个输入构建一个查询代码,之后我将它们发送给控制器,但我有一个问题要将它插入到数据库中

如果结果如下所示,我如何将输入插入db:

{"_token":"C6m83bcZKaQsOtRiYEKxJAzzZjvdLerl9QpsvSSs","client_id":["aJQsijwqFVG9r0","aJQsijwqFVG9r0"],"short":["4","11"],"url":["567567567567","3453434534"]}

代码:

HTML:

                 <form class="js-validation-material form-horizontal push-10-t" action="{!! url() !!}/addreg" method="post">
                                {!! csrf_field() !!}
                                <div class="form-group">
                                    <div id="buildyourform"></div>
                                </div>
                                <div class="form-group">
                                    <div class="col-xs-12">
                                        <button class="btn btn-sm btn-primary" type="submit">Submit</button>
                                    </div>
                                </div> 
                </form>
                <script>
                $(document).ready(function() {
                $("#add").click(function() {
                    var intId = $("#buildyourform div.form").length + 1;
                    var fieldWrapper = $("<div class=\"form col-sm-6 col-lg-6\" id=\"field" + intId + "\"><div class=\"form-material\">");
                    var client_id = $("<input type=\"hidden\" name=\"client_id[]\" value=\"{!! $task->client_id !!}\" class=\"form-control\" />");
                    var langname = $("<select type=\"text\" name=\"short[]\" class=\"form-control\">{!! $data['langs'] !!}</select>");
                    var url = $("<input type=\"text\" name=\"url[]\" class=\"form-control\" placeholder=\"Insert a url..\" />");
                    var label = ("<label for=\"date\"><h3 class=\"block-title\">Lang" + intId + "</h3></label>");
                    var removeButton = $("<button class=\"btn btn-danger  btn-xs push-5-r push-10\" type=\"button\"><i class=\"fa fa-times\"></i></button>");
                    removeButton.click(function() {
                        $(this).parent().remove();
                    });

                    $("#buildyourform").append(fieldWrapper);
                    $("#field" + intId + " .form-material").append(client_id,langname,url,removeButton,label);

                });
            });
           </script>

结果需要在DB中:

    DB::table('table')->insert([
        ['client_id' => $request->client_id],
        ['short' => $request->short],
        ['url' => $request->url],
    ]); 

每个输入。

1 个答案:

答案 0 :(得分:2)

问题是你发送的是具有相同名称的多个输入,所以它只能得到最后一个。

每次你这样做&#34;添加&#34;尝试用类(例如:&#34; foo&#34;)将它们包装在div中。所以你会得到一些&#34; foo&#34;的div。

创建一个名为&#34; items&#34;

的隐藏输入
{{ Form::hidden('items') }}

接下来,您必须覆盖提交按钮的点击功能:

$('#submit-form').click(function(e){
    a = {};
    $.each($('.foo'), function(k,v){
        a[k] = $(v).find(':input').serializeArray()
    });
    $('input[name="items"]').val(JSON.stringify(a));
    $('#form').submit()
}

在控制器中:

$items = json_decode(Input::get('items'), true);    

然后你有一个包含所有输入的数组。