Laravel ist ein beliebtes PHP-Webanwendungs-Framework, das viele leistungsstarke Funktionen und Tools bietet, die den Entwicklungsprozess von Webanwendungen vereinfachen. Unter diesen ist die Soft-Deletion-Funktion von Laravel eine sehr nützliche Funktion. Sie kann einige spezielle Anforderungen erfüllen und gleichzeitig die Datenintegrität wahren, indem Datensätze als gelöscht markiert werden, anstatt Datensätze sofort aus der Datenbank zu löschen.
Eine Frage, die vielen Laravel-Entwicklern jedoch möglicherweise begegnet ist, ist: Können vorläufig gelöschte Daten weiterhin gelesen werden? In diesem Artikel werden wir dieses Problem und seine Lösungen untersuchen.
Zunächst müssen Sie das Prinzip des sanften Löschens in Laravel verstehen. Das vorläufige Löschen wird durch Hinzufügen eines Felds „deleded_at“ zur Datentabelle implementiert. Wenn bei Verwendung der weichen Löschung ein Datensatz gelöscht wird, setzt Laravel einfach das Feld delete_at des Datensatzes auf einen nicht leeren Wert, anstatt den Datensatz zu löschen, wodurch der Effekt einer „weichen Löschung“ erzielt wird. Beim Abfragen von Daten filtert Laravel automatisch Datensätze mit einem nicht leeren delete_at-Feld heraus, um den Effekt zu erzielen, dass nur Datensätze abgefragt werden, die nicht „vorläufig gelöscht“ wurden.
Daher können vorläufig gelöschte Daten weiterhin ausgelesen werden, auch wenn die vorläufig gelöschten Datensätze noch in der Datenbank vorhanden sind. Standardmäßig filtert die vorläufige Löschung von Laravel jedoch nur Datensätze automatisch heraus, die als „vorläufig gelöscht“ markiert wurden. Wenn Sie sowohl vorläufig gelöschte als auch wiederhergestellte Datensätze abfragen müssen, müssen Sie die Methode „withTrashed“ manuell zur Abfrage hinzufügen. Die
withTrashed-Methode gibt vorläufig gelöschte Datensätze zurück, während die Abfrage nicht vorläufig gelöschter Datensätze immer noch die übliche Methode verwendet:
// 查询未被软删除的记录 $users = DB::table('users')->whereNull('deleted_at')->get(); // 查询被软删除的记录 $trashedUsers = DB::table('users')->whereNotNull('deleted_at')->get(); // 同时查询未被软删除和被软删除的记录 $usersWithTrashed = DB::table('users')->withTrashed()->get();
Im obigen Beispiel haben wir die Methoden whereNull und whereNotNull verwendet, um nicht gelöschte und gelöschte Datensätze abzufragen, At Gleichzeitig wird die withTrashed-Methode auch zum Abfragen vorläufig gelöschter Datensätze verwendet.
Zusätzlich zur withTrashed-Methode bietet Laravel auch zwei weitere Methoden: onlyTrashed und restart, die zum Abfragen vorläufig gelöschter Datensätze und zum Wiederherstellen vorläufig gelöschter Datensätze verwendet werden. Die Verwendung ist wie folgt:
// 查询被软删除的记录 $trashedUsers = DB::table('users')->onlyTrashed()->get(); // 恢复软删除的记录 DB::table('users')->where('id', $id)->restore();
Zusammenfassend können vorläufig gelöschte Laravel-Daten weiterhin ausgelesen werden, aber standardmäßig werden nur Datensätze abgefragt, die nicht vorläufig gelöscht wurden. Wenn Sie vorläufig gelöschte und wiederhergestellte Datensätze gleichzeitig abfragen müssen, müssen Sie die Methode withTrashed manuell hinzufügen. Darüber hinaus können Sie auch die Methode „onlyTrashed“ verwenden, um vorläufig gelöschte Datensätze abzufragen, und die Methode „restore“, um vorläufig gelöschte Datensätze wiederherzustellen. Durch die Beherrschung dieser Methoden können Entwickler die Soft-Deletion-Funktion von Laravel besser anwenden und die Entwicklungseffizienz verbessern.
Das obige ist der detaillierte Inhalt vonEine kurze Analyse, wie vorläufig gelöschte Daten in Laravel noch gelesen werden können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!