Question

J'étais coincé sur la manière de stocker mes matrices de données en une seule afin que je puisse l'insérer sur la table à l'aide de Eloquent.J'utilise un JavaScript pour ajouter des rangées dynamiques.Voici le 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();
};
});

et voici mon fichier 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);          

et dans mon contrôleur lorsque j'ai essayé d'utiliser

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

J'ai obtenu ces résultats:

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)

Je l'ai appris d'ici: Générer une nouvelle matrice de Laravel 4 Entrée

Ma question est de savoir comment puis-je mettre ces tableaux dans un seul tableau à venir comme ce code

$insert = array();

foreach($tab as $key => $value)
{
$insert[] = array(
    'id_reservation' => $reservation_id,
    'produit_id' => $key,
    'quantite' => $value
);
}

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

Je reçois aussi le code ci-dessus d'ici: [RESOLU] Constructeur de requête fluideavec une foreach

Était-ce utile?

La solution

Vous insérez plusieurs valeurs en construisant une matrice associative dans laquelle les clés sont des noms de colonne et que les valeurs sont, eh bien, les valeurs.Ce n'est pas évident pourquoi vous êtes confus, car l'exemple que vous fournissez est à peu près sur:

$inserts = array();
foreach ( $input as $v ) {
    $inserts[] = array('name' => $v['name'], 'quantity' => $v['quantity']);
}
DB::table('your_table')->insert($inserts);

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top