Ich habe 2 Modelle, die durch eine Beziehung verbunden sind, die einen zusammengesetzten Schlüssel hat - das sind Produkt und Kategorie. Ich brauche weiche Löschungen für alle Tabellen, damit die Modelle und Beziehungen bei Bedarf wiederhergestellt werden können.Soft Löschen/Trennen und Wiederherstellen/Anfügen von Beziehungen mit zusammengesetzten Schlüsseln
In meinem Produktmodell ich habe:
function categories()
{
return $this->belongsToMany('App\Category', 'product_categories')->whereNull('product_categories.deleted_at')->withTimestamps();
}
In meiner Kategorie Modell ich habe:
function products()
{
return $this->belongsToMany('App\Product', 'product_categories')->whereNull('product_categories.deleted_at')->withTimestamps();
}
lese ich an anderer Stelle über die whereNull Methode verketten, wie Abfragen wie $category->products->contains($product->id)
sonst wurden die weiche Rückkehr gelöschte Beziehungen
Meine Frage ist, was ist der beste Weg zum Löschen und Wiederherstellen dieser weichen gelöschten Beziehungen? Für die Wiederherstellung, zum Beispiel habe ich versucht:
$product->categories()->restore($category_id);
Die oben erzeugt eine SQL-Fehlermeldung, die deleted_at Feld nicht eindeutig war (weil es die Tabelle Kategorien zu product_categories verbunden).
Update - Es scheint, dass das Problem Root ist, dass die BelongsToMany-Klasse keine Soft-Löschungen unterstützt - also Anhängen, Trennen und Synchronisieren aller Löschungen durchführen. Was wäre der beste Ansatz zum Überschreiben dieser Klasse? Grundsätzlich
Dank für die Anregung. Ich fange gerade mit Laravel an und war noch nie auf Charakterzüge gestoßen. Ihre Herangehensweise ist der, die ich mir ausgedacht habe, ähnlich - also benutzerdefinierte Methoden, um damit umzugehen. Im Idealfall möchte ich einfach, dass die Standardmethoden weiche Löschungen unterstützen - obwohl ich ehrlich gesagt nicht weiß, wie machbar das ist. Ich poste als Antwort meine eigene Version der Synchronisierung, die ich erstellt habe. – BrynJ