Maison  >  Article  >  cadre php  >  Une brève analyse de la façon dont les données supprimées de manière logicielle dans Laravel peuvent toujours être lues

Une brève analyse de la façon dont les données supprimées de manière logicielle dans Laravel peuvent toujours être lues

PHPz
PHPzoriginal
2023-04-03 19:41:15514parcourir

Laravel est un framework d'application Web PHP populaire qui fournit de nombreuses fonctionnalités et outils puissants qui simplifient le processus de développement d'applications Web. Parmi eux, la fonction de suppression logicielle de Laravel est une fonctionnalité très utile. Elle peut répondre à certains besoins particuliers tout en conservant l'intégrité des données en marquant les enregistrements comme supprimés au lieu de supprimer immédiatement les enregistrements de la base de données.

Cependant, une question que de nombreux développeurs Laravel ont pu rencontrer est la suivante : les données supprimées de manière logicielle peuvent-elles toujours être lues ? Dans cet article, nous explorerons ce problème et ses solutions.

Tout d’abord, vous devez comprendre le principe de la suppression logicielle dans Laravel. La suppression logicielle est implémentée en ajoutant un champ delete_at à la table de données. Lors de l'utilisation de la suppression logicielle, lorsqu'un enregistrement est supprimé, Laravel définit simplement le champ delete_at de l'enregistrement sur une valeur non vide au lieu de supprimer l'enregistrement, obtenant ainsi l'effet de « suppression logicielle ». Lors de l'interrogation de données, Laravel filtrera automatiquement les enregistrements avec un champ delete_at non vide pour obtenir l'effet d'interroger uniquement les enregistrements qui n'ont pas été « supprimés en douceur ».

Par conséquent, les données supprimées de manière logicielle peuvent toujours être lues, même si les enregistrements supprimés de manière logicielle existent toujours dans la base de données. Cependant, par défaut, la suppression logicielle de Laravel filtrera automatiquement uniquement les enregistrements marqués comme « supprimés automatiquement ». Si vous devez interroger à la fois les enregistrements supprimés et non supprimés, vous devez ajouter manuellement la méthode withTrashed à la requête. La méthode

withTrashed renvoie les enregistrements supprimés de manière logicielle, tandis que l'interrogation des enregistrements non supprimés de manière logicielle utilise toujours la méthode habituelle :

// 查询未被软删除的记录
$users = DB::table('users')->whereNull('deleted_at')->get();

// 查询被软删除的记录
$trashedUsers = DB::table('users')->whereNotNull('deleted_at')->get();

// 同时查询未被软删除和被软删除的记录
$usersWithTrashed = DB::table('users')->withTrashed()->get();

Dans l'exemple ci-dessus, nous avons utilisé les méthodes WhereNull et WhereNotNull pour interroger les enregistrements non supprimés et supprimés, à en même temps, la méthode withTrashed est également utilisée pour interroger les enregistrements supprimés de manière logicielle.

En plus de la méthode withTrashed, Laravel fournit également deux autres méthodes : onlyTrashed et restaurer, qui sont utilisées pour interroger les enregistrements supprimés de manière logicielle et restaurer les enregistrements supprimés de manière logicielle. L'utilisation est la suivante :

// 查询被软删除的记录
$trashedUsers = DB::table('users')->onlyTrashed()->get();

// 恢复软删除的记录
DB::table('users')->where('id', $id)->restore();

En résumé, les données Laravel supprimées de manière logicielle peuvent toujours être lues, mais par défaut, seuls les enregistrements qui n'ont pas été supprimés de manière logicielle sont interrogés. Si vous devez interroger simultanément les enregistrements supprimés et non supprimés, vous devez ajouter manuellement la méthode withTrashed. En outre, vous pouvez également utiliser la méthode onlyTrashed pour interroger les enregistrements supprimés de manière logicielle et la méthode de restauration pour restaurer les enregistrements supprimés de manière logicielle. La maîtrise de ces méthodes peut permettre aux développeurs de mieux appliquer la fonction de suppression logicielle de Laravel et d'améliorer l'efficacité du développement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn