使用 laravel 4 上的循环将数据数组存储到单个数组中

Posted

技术标签:

【中文标题】使用 laravel 4 上的循环将数据数组存储到单个数组中【英文标题】:Store arrays of data into a single array using loop on laravel 4 【发布时间】:2013-11-29 07:05:12 【问题描述】:

我一直在想如何将我的数据数组存储到一个数组中,以便我可以使用 eloquent 将其插入到表中。我正在使用 javascript 添加动态行。这是js:

$(function()
var rowCount = document.getElementById('tblContacts').rows.length - 1 ;
var rowArrayId = rowCount ;

function addRow()

    $("#tblContacts tbody").append(
        "<tr>"+
        "<td><input type='text' name='product[" + rowArrayId + "][name]' class='form-control'/></td>"+
        "<td><textarea name='product[" + rowArrayId + "][description]' class='form-control' rows='1'></textarea></td>"+
        "<td><input type='text' name='product[" + rowArrayId + "][quantity]' class='form-control'/></td>"+
        "<td><input type='text' name='product[" + rowArrayId + "][price]' class='form-control'/></td>"+
        "<td><button class='btnRemoveRow btn btn-danger'>Remove</button></td>"+
        "</tr>");

    $(".btnRemoveRow").bind("click", removeRow);

rowArrayId = rowArrayId + 1; ;


function removeRow()
    var par = $(this).parent().parent(); //tr
    par.remove();
;
);

这是我的 html 文件

<tr>
<td><input type='text' name='product[0][name]' class="form-control"/></td>
<td><textarea name='product[0][description]' class="form-control" rows="1"></textarea></td>
<td><input type='text' name='product[0][quantity]' class="form-control"/></td>
<td><input type='text' name='product[0][price]' class="form-control"/></td>
<td><button class="btnRemoveRow btn btn-danger">Remove</button></td>
 </tr>
$(".btnRemoveRow").bind("click", removeRow);
$("#btnAddRow").bind("click", addRow);          

当我尝试使用时在我的控制器中

$input = Input::get('product');
dd($input);

我得到了这些结果:

array (size=3)
0 => 
array (size=4)
  'name' => string 'first product' (length=13)
  'description' => string 'first product description' (length=25)
  'quantity' => string '10' (length=2)
  'price' => string '15' (length=2)
1 => 
array (size=4)
  'name' => string '2nd product ' (length=12)
  'description' => string '2nd product description' (length=23)
  'quantity' => string '20' (length=2)
  'price' => string '20' (length=2)
2 => 
array (size=4)
  'name' => string '3rd product ' (length=12)
  'description' => string '3rd product description' (length=23)
  'quantity' => string '25' (length=2)
  'price' => string '30' (length=2)

我从这里学到的: Generating New Array from Laravel 4 Input

我的问题是如何将这些数组放入单个数组中以像这些代码一样出现

$insert = array();

foreach($tab as $key => $value)

$insert[] = array(
    'id_reservation' => $reservation_id,
    'produit_id' => $key,
    'quantite' => $value
);


DB::table('products')->insert($insert);

我也从这里得到了上面的代码:[SOLVED] fluent query builder multiple insert with a foreach

【问题讨论】:

【参考方案1】:

您可以通过构造一个关联数组来插入多个值,其中键是列名,值是值。不清楚为什么您会感到困惑,因为您提供的示例几乎是正确的:

$inserts = array();
foreach ( $input as $v ) 
    $inserts[] = array('name' => $v['name'], 'quantity' => $v['quantity']);

DB::table('your_table')->insert($inserts);

【讨论】:

它就像魅力一样!完全节省了我的一天!非常感谢您的帮助:)

以上是关于使用 laravel 4 上的循环将数据数组存储到单个数组中的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 8 中通过循环获取数组数据

如何从循环中获取值到刀片 - laravel

将元素数组存储到数据库(Laravel)

如何将值从数据库中的laravel存储到数组中?

使用 Laravel 和 ajax 保存多维数组

Laravel - 在数据库中在一列中插入动态图像数组 JQuery