Soft Delete in Laravel est implémenté en ajoutant le trait SoftDeletes à un modèle, marquant des enregistrements comme supprimés sans les retirer de la base de données. 1) Ajouter un trait Softdeletes au modèle et définir ?Deleted_at? comme date. 2) Utilisez 'Delete ()' pour définir l'horodatage 'DELELED_AT' au lieu de supprimer l'enregistrement. 3) Récupérer des enregistrements supprimés en douceur avec ?WithTrashed ()? ou ?OnlyTrashed ()?. 4) Restaurer des enregistrements à l'aide de ?restaurer ()? pour remettre ?Deleted_at? à Null. Soft Delete améliore l'intégrité et la récupération des données, mais nécessite une gestion minutieuse des relations, des performances et du gonflement des données.
La mise en ?uvre de Soft Delete dans Laravel est un moyen fantastique de gérer les données sans la supprimer réellement de votre base de données. Cette approche est super pratique lorsque vous souhaitez conserver des enregistrements pour l'audit ou la récupération potentielle sans encaisser votre ensemble de données actif. Alors, plongeons sur la fa?on de mettre cela en place et d'explorer les nuances qui l'accompagnent.
Soft Delete in Laravel marque essentiellement un enregistrement comme supprimé sans le retirer de la base de données. Au lieu d'une opération DELETE
, il définit un horodat deleted_at
, qui vous permet de restaurer facilement les données si nécessaire. Cette méthode est brillante pour maintenir l'intégrité des données et fournir un filet de sécurité.
Pour commencer avec Soft Supprimer, vous devrez ajouter le trait SoftDeletes
à votre modèle. Voici comment vous le faites:
Utiliser illuminate \ database \ eloquent \ modèle; Utiliser illuminate \ database \ elogent \ softdeletes; Le poste de classe étend le modèle { Utiliser des softdeletes; protégé $ dates = ['supprimé_at']; }
Cet extrait de code indique à Laravel de traiter la colonne deleted_at
comme une date et permet la fonctionnalité de suppression Soft pour le modèle Post
. C'est simple, mais puissant.
Maintenant, lorsque vous appelez la méthode delete
sur une instance de modèle, elle ne supprime pas réellement l'enregistrement; il définira à la place l'horoddet deleted_at
:
$ post = post :: find (1); $ post-> delete ();
Après cela, le post avec ID 1 semblera être supprimé, mais il est toujours dans la base de données avec un horodatage deleted_at
.
La récupération des enregistrements supprimés en douceur est tout aussi simple. Vous pouvez utiliser la méthode withTrashed
pour les inclure dans vos requêtes:
$ Posts = Post :: WithTrashed () -> get ();
Cela renverra tous les messages, y compris ceux enroulés en douceur. Si vous ne voulez que les enregistrements supprimés en douceur, utilisez onlyTrashed
:
$ deledEdPosts = Post :: uniquementTrashed () -> get ();
Restaurer un enregistrement supprimé en douceur est également un jeu d'enfant:
$ post = Post :: withTrashed () -> trouver (1); $ post-> restaurer ();
Cela revient la colonne deleted_at
à null
, "ne faisant pas entendre" l'enregistrement.
Maintenant, parlons de quelques idées plus profondes et des pièges potentiels.
Personnalisation du comportement de suppression douce
La suppression douce de Laravel est flexible. Vous pouvez personnaliser le nom de colonne utilisé pour le suivi des suppressions en définissant une constante DELETED_AT
dans votre modèle:
const Deleted_at = 'Trashed_at';
Cela vous permet d'utiliser un nom de colonne différent si deleted_at
ne correspond pas à votre schéma.
Gestion des relations
Lorsque vous traitez avec les relations, Soft Delete peut devenir délicat. Si vous avez un modèle Post
avec une relation comments
, vous voudrez peut-être supprimer des commentaires en douceur lorsqu'un message est supprimé en douceur. Laravel ne le fait pas automatiquement, vous devrez donc le gérer manuellement:
Commentaires de la fonction publique () { retourner $ this-> hasmany (commentaire :: classe); } Fonction publique Delete () { $ this-> commentaires () -> delete (); parent :: Delete (); }
Cela garantit que lorsqu'un post est supprimé en douceur, ses commentaires le sont également.
Considérations de performance
Soft Delete peut avoir un impact sur les performances, en particulier dans les grands ensembles de données. Chaque requête doit vérifier la colonne deleted_at
, ce qui peut ralentir les choses. Pour atténuer cela, envisagez d'utiliser des index sur la colonne deleted_at
:
Schema :: Table ('Posts', fonction (Table Blueprint $) { $ table-> index ('supprimé_at'); });
Cela peut accélérer considérablement les requêtes.
Pièges potentiels
Un piège commun est d'oublier d'utiliser withTrashed
lorsque vous souhaitez réellement inclure des enregistrements supprimés en douceur dans vos requêtes. Cela peut conduire à des résultats inattendus, alors vérifiez toujours vos portées de requête.
Un autre problème est le ballonnement des données. Au fil du temps, votre base de données peut être remplie d'enregistrements supprimés en douceur, ce qui pourrait ne pas être un problème pour les applications plus petites mais peut être un problème important pour les plus grands. La purge régulière de données vraiment obsolètes est une bonne pratique.
Partage de l'expérience
Dans l'un de mes projets, nous avons mis en ?uvre Soft Supprimer pour les comptes d'utilisateurs. C'était idéal pour l'expérience utilisateur car les utilisateurs pouvaient "supprimer" leurs comptes mais ont toujours la possibilité de les réactiver dans un certain délai. Cependant, nous avons rencontré des problèmes avec les contraintes de clés étrangères lorsque nous essayons de supprimer des données connexes. Nous avons fini par créer une solution personnalisée où les données connexes ont également été supprimées en cascade, ce qui nécessitait une planification et des tests minutieux.
Dans un autre scénario, nous avons utilisé Soft Delete pour une plate-forme de commerce électronique pour gérer les listes de produits. Il était utile pour cacher rapidement des produits sans perdre des données historiques, mais nous avons d? faire attention aux performances, comme mentionné précédemment. Nous avons mis en ?uvre un travail CRON pour nettoyer périodiquement des enregistrements supprimés en douceur plus agés d'un an, ce qui a aidé à gérer la taille de la base de données.
Pour résumer, Soft Supprimer à Laravel est une excellente fonctionnalité qui offre une flexibilité et une sécurité dans la gestion des données. N'oubliez pas de considérer les performances, de gérer attentivement les relations et de vous attendre à la ballonnerie des données. Avec ces informations, vous serez bien équipé pour mettre en ?uvre et maintenir efficacement la suppression de Soft dans vos applications Laravel.
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Il existe trois fa?ons d'ajouter des règles de validation personnalisées dans Laravel: en utilisant les fermetures, les classes de règles et les demandes de formulaire. 1. Utilisez les fermetures pour être adaptées à la vérification légère, comme empêcher le nom d'utilisateur "admin"; 2. Créez des classes de règles (telles que ValidUsernamerule) pour rendre la logique complexe plus claire et maintenable; 3. Intégrer plusieurs règles dans les demandes de formulaire et gérer de manière centralisée la logique de vérification. Dans le même temps, vous pouvez définir des invites via des méthodes de messages personnalisés ou des réseaux de messages d'erreur entrants pour améliorer la flexibilité et la maintenabilité.

Les méthodes de base pour les applications Laravel pour implémenter le support multilingue comprennent: la définition des fichiers linguistiques, la commutation de langage dynamique, le routage des URL de traduction et la gestion des clés de traduction dans les modèles de lame. Tout d'abord, organisez les cha?nes de chaque langue dans les dossiers correspondants (tels que EN, ES, FR) dans le répertoire / Resources / Lang, et définissez le contenu de traduction en renvoyant le tableau associatif; 2. Traduire la valeur de clé via l'appel de fonction d'assistance \ _ \ _ () et utilisez l'application :: setLocale () pour combiner des paramètres de session ou de routage pour réaliser la commutation du langage; 3. Pour les URL de traduction, les chemins peuvent être définis pour différentes langues via des groupes de routage préfixés ou par voie d'alias dans les fichiers linguistiques mappés dynamiquement; 4. Gardez les touches de traduction concises et

TOWORKEFFECTECTEMENTSWitHPivottablesInLaravel, FirstAccessPivotDatauSingWithPivot () Orwithtimestamps (), ThepDateEntrieswitHupDateExistPivot (), ManagerLeshipSviaDeTache

LaravelprovidesAcleanAndFlexiblewayToSendNotificationsViamultipleChannelsLikeEmail, SMS, In-Appakets, andpushNotifications.youdefinenotificationChannelsInthevia () MethodofanotificationClass, ANDIDEFINENOTIFICATIONSECHETHODSLIKETOMAIL (), ToDatabase (), Ortovonage

ServiceProvider est le mécanisme de base utilisé dans le cadre Laravel pour l'enregistrement des services et l'initialisation de la logique. Vous pouvez créer un ServiceProvider personnalisé via la commande Artisan; 1. La méthode de registre est utilisée pour lier les services, enregistrer des singletons, définir des alias, etc., et d'autres services qui n'ont pas encore été chargés ne peuvent pas être appelés; 2. La méthode de démarrage s'exécute après que tous les services sont enregistrés et sont utilisés pour enregistrer les écouteurs d'événements, afficher les synthétiseurs, middleware et autres logiques qui dépend d'autres services; Les utilisations courantes incluent les interfaces et les implémentations de liaison, l'enregistrement des fa?ades, le chargement des configurations, l'enregistrement des instructions de ligne de commande et des composants de vue; Il est recommandé de centraliser les liaisons pertinentes à un ServiceProvider pour gérer et de faire attention à l'enregistrement

Les méthodes de base pour gérer les exceptions et les erreurs d'enregistrement dans les applications Laravel incluent: 1. Utilisez la classe App \ Exceptions \ Handler pour gérer de manière centralisée les exceptions non gérées, et enregistrer ou notifier les informations d'exception via la méthode Report (), telles que l'envoi de notifications Slack; 2. Utilisez Monolog pour configurer le système de journal, définissez le niveau de journal et la méthode de sortie dans config / logging.php et activer les journaux d'erreur et supérieurs à l'environnement de production. Dans le même temps, des informations d'exception détaillées peuvent être enregistrées manuellement dans report () en combinaison avec le contexte; 3. Personnalisez la méthode Render () pour retourner une réponse d'erreur de format JSON unifié, améliorant l'efficacité de collaboration de l'extrémité avant et arrière de l'API. Ces étapes sont

L'injection de dépendance gère automatiquement les dépendances de classe via des conteneurs de service dans Laravel sans de nouveaux objets manuels. Son noyau est l'injection de constructeur et l'injection de méthode, comme le passage automatiquement de l'instance de demande dans le contr?leur. Laravel analyse les dépendances via des invites de type et crée récursivement les objets requis. L'interface de liaison et l'implémentation peuvent être utilisées par le fournisseur de services pour utiliser la méthode Bind, ou singleton pour lier un singleton. Lorsque vous l'utilisez, vous devez vous assurer des invites de type, éviter les complications du constructeur, utiliser les liaisons contextuelles avec prudence et comprendre les règles d'analyse automatique. La ma?trise peut améliorer la flexibilité et la maintenance du code.

L'optimisation des performances de Laravel peut améliorer l'efficacité de l'application à travers quatre directions de base. 1. Utilisez le mécanisme de cache pour réduire les requêtes en double, stocker rarement la modification des données via Cache :: Remember () et d'autres méthodes pour réduire la fréquence d'accès à la base de données; 2. Optimiser la base de données de la requête du modèle aux requêtes, évitez les requêtes N 1, spécifiant les requêtes de champ, ajoutant des index, pagination de traitement et de lecture et de séparation d'écriture et réduire les goulots d'étranglement; 3. Utilisez des opérations longues telles que l'envoi d'e-mails et l'exportation de fichiers vers le traitement asynchrone de file d'attente, utilisez le superviseur pour gérer les travailleurs et configurer des mécanismes de réessayer; 4. Utilisez raisonnablement les fournisseurs de middleware et de services pour éviter une logique complexe et un code d'initialisation inutile et retarder le chargement des services pour améliorer l'efficacité du démarrage.
