2017-10-05 2 views
-2

Ich möchte die product_id in der Inventory-Tabelle nach dem Löschen einer bestimmten Gruppe löschen.Löschen der Produkt-ID aus der Inventory-Tabelle nach dem Löschen einer Gruppe in Laravel

Tabellenstruktur:

product_groups
id | grp_name

products
id | prod_name | price | group_id

inventories
id | product_id | in_stock

Code:

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

Modelle

Product Model, ProductGroup Model

Inventory Model

+0

Was ist der Fehler? – zuif

+0

(Methodenbestand existiert nicht) Nach dem Löschen einer bestimmten Gruppe werden die Produkte gelöscht. aber ich möchte auch die product_id in der Bestandsliste löschen. – ElementsOfLife

Antwort

1

1) Sie können dies in Ihrem Inventar Migration verwenden:

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

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

2) Sie können die Löschmethode überschreiben:

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

Ich habe den folgenden Fehler bei meiner Migration "errno: 150" Fremdschlüsseleinschränkung ist falsch gebildet "(SQL: alter table 'Inventories' hinzufügen Einschränkung 'Inventories_product_id_foreign' Fremdschlüssel <'product_id'> Referenzen 'Produkte' <'id'> auf löschen Kaskade) Allgemeiner Fehler: 1005 kann Tabelle nicht erstellen Errno: 150 "Fremdschlüsseleinschränkung ist falsch gebildet" – ElementsOfLife

+0

Versuchen Sie, neue Migration mit dem Entfernen des Fremdschlüssels zuerst zu schreiben, und dann den Fremdschlüssel neu zuzuweisen, überprüfen Sie diesen Link: https: // stackoverflow. com/questions/26820788/add-on-delete-cascade-zu-existing-column-in-laravel –

+0

Syntaxfehler oder Zugriffsverletzung: 1091 Kann nicht 'product_id_foreign' fallen: überprüfen, dass Spalte/Schlüssel existiert .. Das sind meine Tabellen, produkte -> | id | prod_name | group_id |. vorräte -> | id | product_id | instock | – ElementsOfLife

Verwandte Themen