Laravel benutzen, habe ich den folgenden CodeLaravel Eloquent ORM - viele zu viele Delete Pivot-Tabelle Werte links über
$review = Review::find(1);
$review->delete();
Review
hat eine viele zu viele Beziehung mit einem Unternehmen Product
definiert. Wenn ich eine Überprüfung lösche, würde ich erwarten, dass sie von den zugehörigen Produkten in der Pivot-Tabelle getrennt wird, aber das ist nicht der Fall. Wenn ich den obigen Code ausführe, sehe ich immer noch die Verknüpfungszeile in der Pivot-Tabelle.
Habe ich hier etwas verpasst oder funktioniert Laravel so? Ich bin mir der Methode detach()
bewusst, aber ich dachte, dass das Löschen einer Entität sie auch automatisch von allen zugehörigen Entitäten lösen würde.
Review
ist wie folgt definiert:
<?php
class Review extends Eloquent
{
public function products()
{
return $this->belongsToMany('Product');
}
}
Product
definiert:
<?php
class Product extends Eloquent
{
public function reviews()
{
return $this->belongsToMany('Review');
}
}
Vielen Dank im Voraus.
So funktioniert 'Eloquent'. Sie können DB-Ereignisse für die Pivot-Tabelle verwenden ('on delete cascade') oder Ihre Event-Handler mit Eloquent implementieren. Etwas wie http://StackOverflow.com/a/14174356/784588 –