php - Laravel-Array 输入无法在数据库中更新
问题描述
我有一个名为 Orders 的表与 orderItems 表有一对多的关系,当我想更新 orderItems 表的数组值时,它向我显示了这个错误异常数组到字符串的转换,尽管当我使用 dd 时,数据库中的值不会更新() 函数它向我显示所有数组输入 这是我的视图(订单形式)
@if(count($orders)>0)
@foreach ($orders as $order)
<form action="{{route('order.update',$order->id)}}" method="post">
<input type="hidden" value="PUT" name="_method"/>
@csrf
<input name="cus_name" type="text" value={{$order->customerName}}><br/>
<input name="cus_address" type="text" value="{{$order->customerAddress}}"><br/>
<input name="order_date" type="date" value="{{$order->orderDate}}"><br/>
@if(count($orderItems)>0)
@foreach ($orderItems as $orderItem)
<input name="productName[]" type="text" value="{{$orderItem->ProductName}}"><br/>
<input name="Quantity[]" type="number" value="{{$orderItem->Quantity}}"><br/>
<input name="price[]" type="number" value="{{$orderItem->price}}" ><br/>
@endforeach
@endif
<button type="submit" >update </button>
</form>
这是我的订单控制器
public function update(Request $request, $id)
{
$order_Data = Order::where('id',$id)->update([
'customerName' => $request->input('cus_name'),
'customerAddress' => $request->input('cus_address'),
'orderDate' => $request->input('order_date')
]);
$data=array();
foreach ($request->productName as $key => $value) {
$data[]=[
'ProductName' =>$value,
'Quantity' =>$request->Quantity[$key],
'price' =>$request->price[$key],
'OrderID'=>$id
];
}
//dd($data);
OrderItem::where('id',$id)->update($data);
return redirect(route('order.index',$id));
}
错误出现在这一行
OrderItem::where('id',$id)->update($data);
我尝试过了
- 使用 save() 方法,但它不起作用
- 使用
'ProductName' =>$request->productName[$key]
代替'ProductName' =>$value
但也不起作用
我想在按下更新按钮时得到这个结果
订单 1=[ { Product 1,qty1,price 1}, { Product 1,qty1,price 1}, {…….} ]
任何人都可以帮助我,我会很高兴
解决方案
试试这个。
public function update(Request $request, $id)
{
$order_Data = Order::find($id);
$order_Data->customerName => $request->input('cus_name');
$order_Data->customerAddress => $request->input('cus_address');
$order_Data->orderDate => $request->input('order_date');
$order_Data->save();
$order_Data->order_items()->delete();
$data=[];
foreach ($request->productName as $key => $value) {
$order_items = new OrderItem;
$order_items->ProductName = $request->get("ProductName")[$key]);
$order_items->Quantity = $request->get("Quantity")[$key]);
$order_items->price = $request->get("price")[$key]);
$order_items->save();
return redirect(route('order.index',$id));
}
推荐阅读
- flutter - Flutter 2:带有TextPainter的渐变文本在列中中断
- mysql - 节点红色和主机数据库连接
- mongodb - 如何在 MongoDB 中获取限制数据?
- c++ - 了解指向类型类成员的指针 - 无多态性
- angular - 如何使带有 Zone.JS 的 Angular Universal 等待 AWS Lambda SDK 调用调用
- react-native - KeyboardAwareScrollView 导致抖动
- selenium - C#中的窗口管理
- google-chrome-extension - 从网页向 chrome 扩展发送消息。Chrome.runtime.lastError
- css - 如何向现有的引导导航栏添加自定义颜色
- reactjs - React 测试库 - 测试后代元素