【发布时间】:2017-07-05 11:05:25
【问题描述】:
我的请求数据代表一个新的和现有的项目数组。我试图通过这个数组来更新和创建项目。
这就是我检索数组的方式:
$userInput = $request->all();
foreach( $userInput['items'] as $key=>&$item){
稍后在代码中我更新了一个现有项目:
$updateItem = Item::find($item['id']);
$updateItem->number = $item['number'];
$updateItem->save();
但$item['number'] 似乎包含以前更新的旧输入,而不是我上次输入的值。
如何在 Laravel 中循环请求数据?
这是我运行它时的全部代码(希望消除混乱):
$userInput = $request->all();
// checking $userInput here
// I can see the new value in the array
foreach( $userInput['items'] as $key=>$item){
if($item['delete'] == 1) {
Item::where('order_id',$order->id)
->where('id',$item['id'])
->delete();
} else {
if(empty($item['id'])) {
} else {
$updateItem = Item::find($item['id']);
$updateItem->number = $item['id'];
$updateItem->save();
}
}
}
这是来自 html 的输入(只是为了表明我也检查了表单,数据很好):
<input id="basicItemNumber-31" class="form-control" name="items[31][number]" placeholder="Unique number" value="31" type="text">
【问题讨论】:
-
不要在
for中通过引用传递$item,因为您可能会遇到意外行为。即使用$itemnot&$item -
删除它,它会起作用
-
我更新了我的问题,按值传递仍然给我同样的结果。
-
这行得通
$updateItem->number = $request->input("items.$key.number");不知道为什么。
标签: php arrays laravel laravel-5 laravel-5.4