我有services
和items
表。我将数据透视表作为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);
}
答案 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);
}