2017-10-05 109 views
-2

刪除特定組後,我想刪除庫存表中的product_id在刪除Laravel中的組後刪除庫存表中的product_id

表結構:

product_groups
id | grp_name

products
id | prod_name | price | group_id

inventories
id | product_id | in_stock

代碼:

public function ProductGroups_destroy($id) 
{ 
    $product_group = ProductGroup::find($id); 

    $product_group->delete(); 

    $product_group->product()->delete(); 

    $product_group->product->inventory()->delete(); 

    Session::flash('success', 'Product group deleted'); 
    return redirect()->back(); 
} 

模型

Product Model, ProductGroup Model

Inventory Model

+0

有什麼錯誤? – zuif

+0

(方法庫存不存在)刪除特定組後,產品將被刪除。但我也想刪除庫存表中的product_id。 – ElementsOfLife

回答

1

1)您可以在您的庫存遷移時使用:

$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); 

來源:https://laravel.com/docs/5.5/migrations#foreign-key-constraints

2)可以覆蓋刪除方法:

class Product extends Model { 

    protected $table = 'products'; 

    public function inventory(){ 
     return $this->hasMany('App\Inventory', 'product_id'); 
    } 

    public function delete()  
    { 
     DB::transaction(function() 
     { 
      $this->inventory()->delete(); 
      parent::delete(); 
     }); 
    } 

} 
+0

我在遷移過程中出現以下錯誤「errno:150」外鍵約束錯誤地形成「(SQL:alter table'inventory'add constraint'inventories_product_id_foreign'foreign key <'product_id'> references'products'<'id'> on delete cascade)一般錯誤:1005不能創建表。errno:150「外鍵約束不正確」 – ElementsOfLife

+0

嘗試寫入新的遷移,先刪除外鍵,然後重新分配外鍵。 com/questions/26820788/add-on-delete-cascade-to-existing-column-in-laravel –

+0

語法錯誤或訪問衝突:1091不允許drop'product_id_foreign':檢查列/鍵是否存在..這些是我的表,產品 - > | id | prod_name | group_id |。庫存 - > | id | product_id |庫| – ElementsOfLife