Utilisation de portées de requête éloquentes à Laravel.
La portée de la requête éloquente améliore la clarté du code et la réutilisabilité en encapsulant la logique de requête commune. 1. La portée locale est définie avec des méthodes commençant par la portée, telles que ScopeActive () est utilisée pour filtrer les utilisateurs compatibles; 2. La portée dynamique prend en charge le passage des paramètres, comme Scopestatus ($ statut) pour réaliser un filtrage à l'état flexible; 3. La portée globale est automatiquement appliquée à toutes les requêtes, adaptées à l'isolement des données mais doit être utilisée avec prudence; 4. Plusieurs portées peuvent être combinées dans des chaînes pour améliorer l'expression et la maintenance sémantiques; 5. Les requêtes complexes peuvent être traitées de manière centralisée par des jugements conditionnels pour améliorer la flexibilité.
Dans Laravel, les éloges éloquentes des requêtes sont une caractéristique très pratique mais souvent sous-estimée. Il peut vous aider à encapsuler la logique de requête couramment utilisée, ce qui rend le code plus clair et plus réutilisable. Si vous écrivez souvent du double où les conditions ou souhaitez organiser la logique de requête dans votre modèle, l'utilisation de Scopes de requête est un bon choix.

Qu'est-ce que la portée de la requête éloquente?
En termes simples, la portée de la requête éloquente est une méthode définie dans le modèle pour ajouter quelques conditions de requête courantes. Vous pouvez le comprendre comme un "filtre prédéfini". Chaque fois que cette portée est appelée, les conditions de requête que vous avez définies seront automatiquement ajoutées.
Par exemple, si vous souhaitez filtrer tous les utilisateurs avec activé d'état, vous pouvez définir une portée active()
, de sorte que lorsque vous vérifiez les utilisateurs actifs à l'avenir, vous n'avez pas à écrire where('status', 1)
à chaque fois.

Comment définir et utiliser des lunettes locales
La définition d'une portée locale est simple, il vous suffit de créer une méthode commençant par scope
dans le modèle.
Scopeactive de fonction publique ($ Query) { retourner $ query-> où ('statut', 1); }
Ensuite, vous pouvez l'utiliser comme ceci:

User :: Active () -> get ();
Remarque: Le premier paramètre de la portée doit être
$query
, représentant le constructeur de requête actuel.
Les scénarios d'application courants comprennent:
- Filtre Publié Contenu:
scopePublished()
- Filtre les enregistrements marqués comme supprimés en douceur:
scopeNotDeleted()
- Requête par plage de temps:
scopeLastWeek()
Comment utiliser des portées paramétrées
Parfois, vous voulez que la portée reçoive des paramètres. Par exemple, non seulement pour vérifier l'utilisateur avec "Status 1", mais souhaite également passer dans différentes valeurs d'état.
Cela peut être fait pour le moment:
Fonction publique Scopestatus ($ Query, $ statut) { retourner $ query-> où ('statut', $ status); }
Passer les paramètres lorsque vous utilisez:
User :: Status (2) -> get ();
Cette méthode est très adaptée aux scénarios où un transfert de valeur flexible est requis, tel que la recherche par mot-clé, le décalage de pagination, l'intervalle de temps, etc.
À quoi dois-je prêter attention lors de l'utilisation des étendues mondiales?
En plus des portées locales, Laravel prend en charge les lunettes mondiales, qui sont automatiquement appliquées chaque fois que le modèle est interrogé. Convient à l'isolement unifié des données, tels que l'accès uniquement aux données actuelles du locataire dans un système multi-locataire.
Pour utiliser la portée globale, vous devez créer une classe pour implémenter Illuminate\Database\Eloquent\Scope
, puis appelez addGlobalScope()
dans booted()
du modèle.
Fonction statique protégée démarrée () { statique :: addglobalscope ('locataire', fonction ($ builder) { $ builder-> où ('locant_id', locant_current_id ()); }); }
Cependant, il convient de noter qu'une fois la portée globale ajoutée, elle ne peut pas être facilement supprimée . Si vous souhaitez le contourner temporairement, vous ne pouvez l'annuler qu'à l'aide de withoutGlobalScopes()
.
Une petite astuce: combiner plusieurs lunettes
Vous pouvez combiner plusieurs lunettes comme les blocs de construction, tels que:
User :: Active () -> Verified () -> récent () -> get ();
Chaque portée renvoie une instance de constructeur de requête, il peut donc être appelé dans une chaîne. Cette écriture est non seulement sémantique, mais aussi facile à tester et à maintenir.
De plus, si une requête est particulièrement complexe, plusieurs jugements conditionnels peuvent être encapsulés dans une portée, comme:
Fonction publique ScopeFilter ($ Query, $ filtres) { if (! vide ($ filters ['status'])) { $ query-> où ('statut', $ filters ['status']); } if (! vide ($ filters ['search'])) { $ query-> où ('name', 'like', '%'. $ filters ['search']. '%'); } }
De cette façon, les paramètres du filtre transmis à partir de l'extrémité avant peuvent être traités de manière centralisée.
Fondamentalement, c'est tout. Les portées de requête ne sont pas compliquées, mais sont très utiles dans le développement réel. L'utiliser rationnellement peut rendre votre modèle de calque de modèle et plus facile à écrire une logique de requête cohérente.
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 grâce à 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)

Créer un tableau de références pour enregistrer les relations de recommandation, y compris les références, les références, les codes de recommandation et le temps d'utilisation; 2. Définir l'appartenance et les relations HasMany dans le modèle d'utilisateur pour gérer les données de recommandation; 3. Générer un code de recommandation unique lors de l'enregistrement (peut être implémenté via des événements modèles); 4. Capturez le code de recommandation en interrogeant les paramètres lors de l'enregistrement, établissez une relation de recommandation après vérification et empêchez l'auto-recommandation; 5. Déclencher le mécanisme de récompense lorsque les utilisateurs recommandés terminent le comportement spécifié (ordre d'abonnement); 6. Générer des liens de recommandation partageables et utiliser les URL de signature Laravel pour améliorer la sécurité; 7. Afficher les statistiques de recommandation sur le tableau de bord, telles que le nombre total de recommandations et de nombres convertis; Il est nécessaire de s'assurer que les contraintes de base de données, les séances ou les cookies sont persistées,

ChoOSEAFEUREFLAGSTATTECYSUCHASCONFIG, basé sur la base de données, Orthird-PartyToolsLILLFlagsmith.2.SetUpadatabase-DrivensystemByCreatAmamigrationForaFeate_Flagstablewithname, Activé, Andrulesfields, Therunthemigration.3.CreateafateAtteflagModelwithe

Créer un nouveau projet Laravel et démarrer le service; 2. Générez le modèle, la migration et le contrôleur et exécuter la migration; 3. Définissez l'itinéraire RESTful dans les routes / api.php; 4. Implémentez la méthode d'addition, de suppression, de modification et de requête dans Post Controller et renvoyez la réponse JSON; 5. Utilisez Postman ou Curl pour tester la fonction API; 6. Ajouter éventuellement l'authentification de l'API via Sanctum; Enfin, obtenez une structure claire, Laravelrestapi complète et extensible, adaptée aux applications pratiques.

Le modèle de référentiel est un modèle de conception utilisé pour découpler la logique métier à partir de la logique d'accès aux données. 1. Il définit les méthodes d'accès aux données via des interfaces (contrat); 2. Les opérations spécifiques sont implémentées par la classe de référentiel; 3. Le contrôleur utilise l'interface par injection de dépendance et ne contacte pas directement la source de données; 4. Les avantages incluent un code soigné, une testabilité solide, une maintenance facile et une collaboration d'équipe; 5. Applicable aux projets moyens et grands, les petits projets peuvent utiliser directement le modèle.

Eloquentorm est le système de cartographie relationnel d'objet intégré de Laravel. Il exploite la base de données via la syntaxe PHP au lieu de SQL native, ce qui rend le code plus concis et plus facile à maintenir; 1. Chaque tableau de données correspond à une classe de modèle, et chaque enregistrement existe comme instance de modèle; 2. Adopter le mode d'enregistrement actif et l'instance du modèle peut être enregistrée ou mise à jour par elle-même; 3. Prise en charge de l'affectation par lots et l'attribut à remplissage $ doit être défini dans le modèle pour garantir la sécurité; 4. Fournir un fort soutien relationnel, comme un à un, un-à-plusieurs, plusieurs à plusieurs, etc., et vous pouvez accéder aux données associées via des appels de méthode; 5. Constructeur de requête intégré, où, OrderBy et d'autres méthodes peuvent être appelés enchaînés pour construire des requêtes; 6. Prise en charge des accessoires et des modificateurs, qui peuvent formater le numéro lors de l'obtention ou de la définition d'attributs.

AccessorsandMutatorsInLaravel'SeloventoralLowyoutOrOrorManipulateModelatRributes Pendant ce temps

Utilisez des formulaires pour extraire la logique de vérification de formulaire complexe du contrôleur, améliorant la maintenabilité du code et la réutilisabilité. 1. Méthode de création: générer la classe de demande via la commande artisan make: demande; 2. Règles de définition: définir la logique de vérification du champ dans la méthode des règles (); 3. Utilisation du contrôleur: recevez directement les demandes avec cette classe en tant que paramètre, et Laravel vérifie automatiquement; 4. Jugement d'autorisation: Contrôler les autorisations des utilisateurs via la méthode Authorize (); 5. Règles d'ajustement dynamique: renvoyez dynamiquement différentes règles de vérification en fonction du contenu de la demande.

LaraveLolientsSupportsSubQueriesInselect, d'où, et d'orderByClauses, permettant à la FlexibledataRetrievalwithoutrawsql; 1.Useesectsub () ToaddCompuledColumns likepostcountperUser; 2.Usefromsub () OrclosionInfrom () totaleaTSubQueryArableforgouredData;
