在laravel

时间:2017-11-12 08:58:51

标签: php laravel

我有servicesitems表。我将数据透视表作为service_item。我能够将数据存储到我的数据透视表中,但是我无法获得更新数据透视表的正确语法。当我尝试更新现有数据时,我的代码存储了一个新数据。

PS :我的代码虽然可以编辑客户端的名称,但不能编辑客户先前购买的商品。

我希望能够更新item_id和数量

service_item - pivot。

service_id

item_id

qty

控制器

public function store(Request $request)
 {
    $service = new Service(array(
         'id' => $service_no,

     ));

     $service->save();
     $selectedItems = [];         
    foreach($request->get('item_id') as $key => $id) {
        $selectedItems[$id] = ['qty' => $request->get('quantity')[$key]];
    }  
     $service->items()->attach($selectedItems);  
 }



 public function update($id, Request $request)
     {
         $service = Service::findOrFail($id);
         $service->clients->name = $request->get('name');   
         $service->clients->save();

         $selectedItems = [];         
         foreach($request->get('item_id') as $key => $id) {
             $selectedItems[$id] = ['qty' => $request->get('quantity')[$key]];
         }  
          $service->items()->attach($selectedItems);  


     }

1 个答案:

答案 0 :(得分:0)

好的,经过研究,我能够使用updateExistingPivot

来解决这个问题
public function update($id, Request $request)
     {
         $service = Service::findOrFail($id);
         $service->clients->name = $request->get('name');   
         $service->clients->save();

         $selectedItems = [];         
         foreach($request->get('item_id') as $key => $id) {
             $selectedItems[$id] = ['qty' => $request->get('quantity')[$key]];
         }  
         $service->items()->updateExistingPivot($item_id, ['quantity' => selectedItems], false);


     }