2017-08-27 113 views
1

對於每次訪問,我可能會有很多產品;因此透視表(product_visit)具有以下字段: id,product_id,visit_id,qtd和金額。Laravel 5.4 - 從數據透視表中刪除特定記錄

要刪除的訪問和數據透視表的相關記錄,一切工作正常:

public function getVisitDelete($id){ 
    $visits = Visit::find($id); 
    $visits->products()->detach(); 
    $visits->delete(); 
} 

但是,我無法弄清楚如何使用分離或類似的東西樞軸表中刪除一個特定的記錄。所以,我最後做了以下內容:

public function getProductVisitDelete(){ 
    $visit_id = (int)Request('visit_id'); 
    $product_id = (int)Request('product_id'); 
    $sqlDelete = "delete from product_visit where visit_id=$visit_id and product_id = $product_id"; 
    DB::select($sqlDelete); 
} 

雖然它的作品,我很遠快樂與此解決方案 - 看起來像我失去了一些東西。

回答

1

您可以使用wherePivot()方法從訪問中分離特定產品。

$visits = Visit::find($visit_id); 
$visits->products()->wherPivot('product_id','=',$product_id)->detach(); 

更新 作爲Laravel docs「安裝/拆卸」一節中給出,您可以通過要在detach()方法來刪除相關模型的ID。示例

$visits = Visit::find($id); 
$visits->products()->detach($product_id); 
+0

工作完美!非常感謝,@ jaysingkar –