首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在数据库中更新Laravel-Array输入

无法在数据库中更新Laravel-Array输入
EN

Stack Overflow用户
提问于 2020-03-30 18:26:53
回答 2查看 198关注 0票数 1

我有一个名为Orders的表,它与orderItems表的数组值有一对多的关系,当我想更新orderItems表的数组值时,它显示了这个错误异常数组到字符串转换,并且这些值不会在数据库中更新,尽管当我使用dd()函数时,它会显示所有数组输入我的视图(order-form)。

代码语言:javascript
复制
@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>

这是我的orderController

代码语言:javascript
复制
    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));
}

错误出现在这一行中。

代码语言:javascript
复制
OrderItem::where('id',$id)->update($data);

我试过了

  • 使用

()方法,但它不工作,

  • 使用'ProductName' =>$request->productName[$key]代替'ProductName' =>$value,但也不工作

当按下update botton时,我想得到这样的结果

Order 1= {Product1,qty1,price 1},{Product1,qty1,price 1},{…….)

任何人都可以帮助我,我会变得如此荒凉

EN

回答 2

Stack Overflow用户

发布于 2020-03-30 18:40:39

试一次这个。

代码语言:javascript
复制
 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));
}

票数 0
EN

Stack Overflow用户

发布于 2020-03-31 12:19:54

01。使用json_encode()方法

代码语言:javascript
复制
$data = json_encode($data);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60937071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档