ashish ashish - 9 months ago 91
PHP Question

Laravel 5.2 Inserting and updating data from dynamic form

So far, I have found answers in here and never needed to ask anything. But this issue is really bugging me. Here is the situation. I have a dynamic invoice form. Posts from the form will be saved to two different tables

  1. invoices(where details for invoice is stored like member_id, discount, duedate, remarks and the timestamps)

  2. invoiceitems(invoice_id, itemdescription, quantity, rate, timestamps)

To achieve this, here is my method to store invoice

public function store(InvoiceRequest $request)

//get necessary details for invoice table
$datainvoice = array(
'member_id' => $request->input('member_id'),
'duedate' => $request->input('duedate'),
'discount' => $request->input('discount'),
'remarks' => $request->input('remarks'),
//'gtotal' => $request->input ('gtotal'),

//save result of invoice
$resultforinvoice = Invoice::create($datainvoice);

// ready all data of invoice items
$datainvoiceitem = array(
'description' => $request->input('description'),
'rate' => $request->input('rate'),
'quantity' => $request->input('quantity'),
'invoice_id' => $resultforinvoice->id,

// insert invoice along with invoice_id
return redirect('members');


Additional Information:

Relationship between members and invoices:: member-has-many-invoices, invoice-belongs-to-single-member

Relationship between invoice and invoiceitems:: invoice-has-many-items,

partial of the dynamic form:

<td> 1 </td>
<td><textarea type="text" name='description[0][description]' class="form-control"/></textarea> </td>
<td><input type="text" name='quantity[0][quantity]' class="form-control"/></td>
<td> <input type="text" name='rate[0][rate]' class="form-control"/> </td>

Errors im receiving right now Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, integer given, called in C:\xampp\htdocs\study\vendor\laravel\framework\src\Illuminate\Database\Query\Grammars\Grammar.php on line 719 and defined


when i try to return the inputs for invoiceitems to check whats going on, i get an array like below

"description": [
"description": "desc1"
"description": "desc2"
"rate": [
"rate": "11"
"rate": "22"
"quantity": [
"quantity": "1"
"quantity": "2"
"invoice_id": 41


Guys, please tell let me know where im missing. I have tried asking this in laracast as well, its been couple of hours nothing at the moment, hopefully someone will point me to right direction. Here is the laracast link.


I ended up updating majority of the code and now it looks like this

 $items = [];
    foreach ($request->items as $field => $values) {
        foreach ($values as $index => $value) {
            $items[$index][$field] = $value;


and it just worked. Let me know anyone else needs help with this. I would be happy to explain