Heim > Backend-Entwicklung > PHP-Tutorial > Filament: Anhänge beim Löschen eines Datensatzes löschen

Filament: Anhänge beim Löschen eines Datensatzes löschen

Mary-Kate Olsen
Freigeben: 2024-10-16 06:07:02
Original
900 Leute haben es durchsucht

Filament: Delete Attachments when Deleting a Record

Filament ermöglicht Ihnen das Hinzufügen von Anhängen zu einem Datensatz, löscht diese jedoch nicht, wenn Sie den Datensatz löschen.

Um dieses Problem zu lösen, haben wir zwei Alternativen:

Hören Sie sich das Löschereignis des Modells an

Wenn ein Modell gelöscht werden soll, wird das Löschereignis ausgelöst. Wir können dieses Ereignis abhören, um die Funktion auszulösen, die dafür verantwortlich ist, alle Anhänge zu löschen, bevor das Modell nicht mehr existiert.

Innerhalb der Modellklasse können wir die Booted-Methode hinzufügen, um neue Ereignis-Listener im Modell zu registrieren.

class Project extends Model
{
    protected $fillable = [
        'title', 'slug', 'repository', 'description', 'thumbnail',
    ];

    /**
     * The "booted" method of the model.
     */
    protected static function booted(): void
    {
        static::deleting(function ($project) {
            Storage::disk('public')->delete($project->thumbnail);
        });
    }
}
Nach dem Login kopieren

Dieser Code löscht den Miniaturbild-Anhang, bevor das Modell gelöscht wird.

Mehr dazu können Sie in der Laravel-Dokumentation https://laravel.com/docs/11.x/eloquent#events-using-closures lesen

Ändern Sie die Löschaktion von Filament

Eine weitere Möglichkeit besteht darin, das Verhalten der Löschaktion zu ändern.

protected function getActions(): array
{
    return [
        Actions\DeleteAction::make()
            ->after(function (Project $project) {
                // delete single
                if ($project->thumbnail) {
                    Storage::disk('public')->delete($project->thumbnail);
                }
            })
    ];
}
Nach dem Login kopieren

Sie können die Option verwenden, die Ihren Anforderungen besser entspricht. Beachten Sie jedoch, dass durch das Hinzufügen eines Ereignis-Listeners der Anhang gelöscht wird, wenn Ihr Modell gelöscht wird, wann immer dies durch eine Filament-Aktion oder einen anderen Teil des Codes in Ihrer App geschehen ist.

Dies ist wichtig, da es wahrscheinlich darüber entscheidet, welche Option Sie wählen sollten.

Das obige ist der detaillierte Inhalt vonFilament: Anhänge beim Löschen eines Datensatzes löschen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage