Heim >PHP-Framework >Laravel >So implementieren Sie Soft-Delete im Laravel-Framework

So implementieren Sie Soft-Delete im Laravel-Framework

PHPz
PHPzOriginal
2023-03-31 17:16:491809Durchsuche

Laravel ist ein leistungsstarkes PHP-Framework, das Entwicklern viele praktische Funktionen bietet. Unter diesen ist das vorläufige Löschen eine sehr nützliche Funktion. In diesem Artikel wird erläutert, wie Sie Soft Deletion im Laravel-Framework implementieren.

Vorsichtiges Löschen bedeutet, einen Datensatz als gelöscht zu markieren, anstatt ihn tatsächlich zu löschen. Dies gibt uns die Möglichkeit, gelöschte Datensätze unter Wahrung der Datenintegrität wiederherzustellen. Wenn wir Datensätze direkt löschen, kann dies zu Abhängigkeiten führen. Daher ist das sanfte Löschen eine sehr gute Wahl.

Um weiche Löschungen in Laravel zu ermöglichen, müssen wir zunächst die Funktion SoftDeletes im Modell verwenden. SoftDeletes特性。

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class User extends Model
{
    use SoftDeletes;

    protected $dates = ['deleted_at'];
}

在上面的示例中,我们使用use SoftDeletes来启用软删除,并定义了一个deleted_at属性,它将在模型中用于保存软删除的时间戳。

一旦我们启用了SoftDeletes特性,我们就可以在Laravel中使用delete()方法执行软删除。该方法会将deleted_at属性设置为当前时间戳。要恢复一个软删除的记录,我们需要使用Laravel中的restore()方法。

// 在模型中软删除一个记录
$user = User::find(1);
$user->delete();

// 恢复一个软删除的记录
$user = User::withTrashed()->where('id', 1)->first();
$user->restore();

在以上代码中,我们首先使用delete()方法软删除了一条记录。然后,我们使用withTrashed()方法来检索软删除的记录,然后使用restore()方法来恢复该记录。

当我们从表中检索数据时,我们通常不希望返回已删除的记录。使用Laravel的onlyTrashed()方法,我们可以只列出已删除的记录。若要列出所有记录,包括已删除的记录,请使用withTrashed()方法。

// 获取只删除的记录
$deletedUsers = User::onlyTrashed()->get();

// 获取所有记录,包括已删除的记录
$allUsers = User::withTrashed()->get();

Laravel还提供了一个forceDelete()方法,用于强制删除软删除的记录。这个方法会完全从数据库中删除记录,而不是简单地将deleted_at

// 永久删除一个已删除记录
$user = User::withTrashed()->where('id', 1)->first();
$user->forceDelete();
Im obigen Beispiel verwenden wir use SoftDeletes, um vorläufige Löschungen zu ermöglichen und definieren ein deleted_at-Attribut, das im Modell verwendet wird, um den Zeitstempel für vorläufige Löschungen zu speichern.

Sobald wir die Funktion SoftDeletes aktivieren, können wir weiche Löschungen mit der Methode delete() in Laravel durchführen. Diese Methode setzt das Attribut deleted_at auf den aktuellen Zeitstempel. Um einen vorläufig gelöschten Datensatz wiederherzustellen, müssen wir die Methode restore() in Laravel verwenden. 🎜rrreee🎜Im obigen Code löschen wir zunächst einen Datensatz sanft mit der Methode delete(). Anschließend verwenden wir die Methode withTrashed(), um den vorläufig gelöschten Datensatz abzurufen, und anschließend die Methode restore(), um den Datensatz wiederherzustellen. 🎜🎜Wenn wir Daten aus einer Tabelle abrufen, möchten wir normalerweise keine gelöschten Datensätze zurückgeben. Mit der Methode onlyTrashed() von Laravel können wir nur gelöschte Datensätze auflisten. Um alle Datensätze, einschließlich gelöschter Datensätze, aufzulisten, verwenden Sie die Methode withTrashed(). 🎜rrreee🎜Laravel bietet auch eine forceDelete()-Methode, um vorläufig gelöschte Datensätze zwangsweise zu löschen. Diese Methode löscht den Datensatz vollständig aus der Datenbank, anstatt einfach das Attribut deleted_at auf den aktuellen Zeitstempel zu setzen. 🎜rrreee🎜In diesem Artikel haben wir gelernt, wie man Soft-Delete in Laravel aktiviert und verwendet. Vorläufiges Löschen verbessert unsere Datenintegrität und hilft uns, gelöschte Datensätze einfach wiederherzustellen. In tatsächlichen Projekten ist das sanfte Löschen eine sehr nützliche Funktion, die wir entsprechend den Anforderungen des Projekts verwenden können. 🎜

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Soft-Delete im Laravel-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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