【问题标题】:How to insert array of values into db using laravel?如何使用laravel将值数组插入数据库?
【发布时间】:2018-01-31 17:59:01
【问题描述】:

output of dd($formdescription->all());

var addInput3 = function(e) {
    var arr3 = [];
    $(".materialclass").each(function() {
        arr3.push($(this).val());
    });
    $('#materialvalue').html(arr3.join(","));
}

$(document).ready(function() {
   $(document).on("click", ".material", function(e) {
    e.preventDefault();
    var clone = '<div class="material1"><select class="materialclass"><option selected disabled>--Select One--</option><option value="No batteries">No batteries</option><option value="AA">AA</option><option value="AAA">AAA</option><option value="Lithium">Lithium</option></select><input type = "submit"    value = "-"    class = "remove" ><input type = "submit"    value = "+"    class = "material" ></div>';
    $(this).closest('.material1').after(clone);
  });
  $(document).on("click", ".remove", function(e) {
    e.preventDefault();
    $(this).parent(".material1").remove();
  });
    
});
$('.materialclass').unbind().bind('change', addInput3);

var addInput = function(e) {
    var arr = [];
    $("input.packageclass").each(function() {
        arr.push($(this).val());
    });
    //alert(arr);
    $('#salespackage').html(arr.join(","));
}

$(document).ready(function() {
    $(document).on("click", ".addnext", function(e) {
      e.preventDefault();
        var clone = '<div class="addpack"><input class="packageclass" type="text" name="package[]" id="package" placeholder="Ex.accessories"/><input type = "submit"    value = "-"    class = "remove" ><input type = "submit"    value = "+"    class = "addnext" ></div>';
        $(this).closest('.addpack').after(clone);
        $('.packageclass').unbind().bind('change', addInput);
    });
    $(document).on("click", ".remove", function(e) {
      e.preventDefault();
        $(this).parent(".addpack").remove();
    });

});
$('.packageclass').unbind().bind('change', addInput);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id=container>
           <div class="addpack">
            <h6>Sales Package </h6>
            <div>
    <input type="text" name="package[]" placeholder="EX.accessories" id="package" class="packageclass">
            <input type="submit" value="+" class="addnext"></div>
            </div>
            </div>
            <br/>
            <br/>
            <div id="container">
            <div class="material1">
            <h6>Material </h6>
            <div>
            <select class="materialclass" name="material">
            <option selected disabled>--Select One--</option>
            <option value="No batteries">No batteries</option>
            <option value="AA">AA</option>
            <option value="AAA">AAA</option>
            <option value="Lithium">Lithium</option>
            </select>
             <input type="submit" value="+" class="material"></div>
             </div>
             </div>

这是我的 laravel 视图代码。在这里,当我单击添加按钮时,输入字段会重复,(显示在 sn-p 中)。

我需要的是,为这些字段添加多个值。

例如,销售包-->附件 销售包-->手册

即,为同一字段添加多个值。

但是,只有最后一个添加的值会被插入到数据库中。

控制器:

      public function addProductDetails(Request 
 $formdescription,$dataId,$pidvalue)
 {

         $description=new productDescription;
         $description->deviceCategoryId=$dataId;
         $description->product_id=$pidvalue;
         $description->descid=$this->getproductDescriptionId();
         $description->Width =$formdescription->input('width');
         $description->save();



 /* $salesPackage=new packageModel;
  $salesPackage->salesPackage=$formdescription->input('package');
  $salesPackage->productdesc()->associate($description->descid);
  $salesPackage->save();*/

 **$salesPackage = array();
     $salesPackage = $formdescription->input('package');
     //$id = $salesPackage->productdesc()->associate($description-
  >descid);**

     **$sales = new packageModel;
     $sales->productdesc()->associate($description->descid);
     foreach($salesPackage as $sp){

         //$sales->productdesc_id = $id;
         $sales->salesPackage   = $sp;
         $sales->save();

     }**
   }







 return response()->json([
    'modelName'    => $formdescription->mname,
    'colour' => $formdescription->colour,
    'rechargable' => $formdescription->rechargable,
    'batteryType' => $formdescription->batteryType
]);

 //$description->product()->associate($priceInfo);
}

以粗体标记的代码(控制器)用于添加数组值。 此外,我只尝试了 salesPackage 字段,但同样需要添加下拉值数组(即 Material)。

【问题讨论】:

  • 你能添加dd($request-&gt;all())的输出吗?
  • 好的..我会更新它
  • 您需要检查输入是否有数组值,然后使用 foreach 您可以遍历每个项目以将其保存到数据库
  • 我不知道如何用foreach迭代它

标签: javascript php mysql laravel


【解决方案1】:

希望这个简单的例子能帮助你在 db 中插入值数组 -

            $money = new Money();

            $add = [
                'created_by'    => $request->user_id,
                'date'          => $request->date,
                'description'   => $request->description,
                'amount'        => $request->amount,
                'type'          => $request->type
            ];

            $res = $money->create($add);
            dd($res); // this will give you response of newly inserted record.

【讨论】:

  • 我可以在这里使用保存而不是创建吗??
  • 能否执行保存操作??
  • create 基本上是插入像 save 这样的记录。
  • (1/1) ErrorException Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, string given, called in /var/www/html/AdminPanel/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php on line 681 and defined
  • 你能在这里添加你的代码吗?因为您在查询中传递字符串而不是数组。
猜你喜欢
  • 2019-09-26
  • 2015-12-03
  • 2020-12-31
  • 2018-06-16
  • 2018-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
相关资源
最近更新 更多