Laravel 5.6 и сохранение значений массива - PullRequest
0 голосов
/ 11 мая 2018

Я полностью новичок в Laravel и пытаюсь создать простую форму счета-фактуры (до сих пор набросал только несколько полей).Заголовок счета-фактуры сохраняется в БД правильно, первый InvoiceItem также.Однако, если я добавляю более одной строки в таблицу с элементами Invoice, в БД сохраняется только первое значение.

Это строка InvoiceItem:

<tr>
<td>
<select class="form-control name" name="productname[]">
<option value="0" selected="true" disabled="true">Select Product</option>
@foreach($product_lists as $key=>$p)
<option value="{!!$key!!}">{!!$p!!}</option>
@endforeach                                             
</td>
<td><input type="text" class="form-control form-control-line qty" name="qty[]"></td>
<td><input type="text" class="form-control form-control-line price" name="price[]"></td>
<td><input type="text" class="form-control form-control-line total" name="total[]"></td>
<td><a href="#" class="remove">-<i class="glyphicon glyphicon-remove"></i></a></td>
</tr>

Это jqueryдобавить еще одну строку InvoiceItem:

function addRow(){
var tr='<tr>'+
'<td>'+
'<select class="form-control name" name="productname[]">'+
'<option value="0" selected="true" disabled="true">Select Product</option>'+
'@foreach($product_lists as $key=>$p)'+
'<option value="{!!$key!!}">{!!$p!!}</option>'+
'@endforeach'+                                      
'</td>'+
'<td><input type="text" class="form-control form-control-line qty" name="qty[]"></td>'+
'<td><input type="text" class="form-control form-control-line price" name="price[]"></td>'+
'<td><input type="text" class="form-control form-control-line total" name="total[]"></td>'+
'<td><a href="#" class="remove">-<i class="glyphicon glyphicon-remove"></i></a></td>'+
'</tr>';
$('tbody').append(tr);
};

Это мой контроллер:

public function store(Request $request)
{
$salesinvoice = $this->validate(request(), [
'invoice_no' => 'required'
]);
SalesInvoice::create($salesinvoice);
foreach ($request->productname as $key=>$v) {
$data=array(
'product_id'=>$request->$v,
'qty'=>$request->qty[$key],
'price'=>$request->price[$key],
'total'=>$request->total[$key]
);
SalesInvoiceItem::insert($data);    
};

Буду признателен за любые указания / подсказки, как ее решить.

Редактировать: Этозапрос:

array:6 [▼
  "_token" => "xw1dkpYSjUNql1mHJLrreieRgcPk5nafpuvnawu0"
  "invoice_no" => "1000"
  "productname" => array:1 [▼
    0 => "1"
  ]
  "qty" => array:1 [▼
    0 => "5"
  ]
  "price" => array:1 [▼
    0 => "25"
  ]
  "total" => array:1 [▼
    0 => "125"
  ]
]

Похоже, проблема в самой форме, а не в контроллере, верно?

1 Ответ

0 голосов
/ 11 мая 2018

При вставке данных должно быть $v вместо $request->$v.

Заменить следующее:

'product_id' => $request->$v,

Автор:

'product_id' => $v
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...