在 Laravel 中删除组后,从库存 table 中删除 product_id

Delete product_id from inventories table after deleting a group in Laravel

我想在删除特定组后删除库存table中的product_id

Table结构:

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

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();
        });
    }

}