Ich habe ein Elternmodell und ein Kindmodell, sagen Kategorien und Beiträge. Das Post
Modell kann eine vorgestellten Bild, um es angebracht, die aus dem Speicher entfernt werden muss, wenn der Beitrag gelöscht wird, so in meinem PostController
meine destroy
Methode sieht wie folgt aus:Löschen von Kindmodell mit zusätzlicher Logik
public function destroy($id)
{
$post = Post::findOrFail($id);
if ($post->featured_image_path) {
Storage::delete($post->featured_image_path);
}
$post->delete();
return redirect('/admin/posts');
}
Mein CategoryController
hat eine ähnliche destroy
Verfahren, es muss aber auch jedes seiner Post
s entfernen, wenn es zerstört wird. Ich weiß, dass ich einen Fremdschlüssel verwenden und mich auf die Beziehung verlassen kann, um die Beiträge zu löschen, aber wenn das geschieht, werden die vorgestellten Bilder nicht aus dem Speicher entfernt. Ich könnte jede $category->posts()
in meiner [email protected]
Methode durchlaufen und nach vorgestellten Bildern suchen, aber es scheint nicht richtig, diese Logik an mehreren Orten zu duplizieren.
Was ist der beste Weg, um die Logik von der destroy
Methode auf meinem Post
laufen, wenn ein Category
im CategoryController
zu löschen?
abfeuern können Ich denke, es ist besser für alle zu sammeln 'post- $> featured_image_path' in einem Array oder etwas dann zu einem Cleanupauftrag senden und mit dem normalen Beziehung fortfahren löscht . –
@CerlinBoss Wie würden Sie den Bereinigungsjob an die Beziehung löschen binden? –
wie ich schon sagte. Sammeln Sie zuerst den Speicherort der Dateien, die in einem Array gelöscht werden sollen, und senden Sie den Job zur Reinigung, um mit dem normalen Löschvorgang fortzufahren. Oder senden Sie den Bereinigungsjob nach dem erfolgreichen Löschen von '$ category' und' $ posts' –