Cet article vous présente principalement des informations pertinentes sur l'optimisation des règles de validation uniques et existantes dans Laravel. L'article le présente en détail à travers un exemple de code. Il a une certaine valeur d'apprentissage de référence pour les études ou le travail de tous les amis qui en ont besoin. Apprenons avec l'éditeur ci-dessous.
Préface
Laravel fournit une variété de méthodes pour vérifier les données d'entrée de l'application. Par défaut, les classes de base du contrôleur de Laravel utilisent le trait ValidatesRequests, qui fournit des méthodes pratiques pour valider les requêtes HTTP entrantes via une variété de règles de validation puissantes.
Il est très pratique de vérifier les requêtes via le trait ValidatesRequests dans Laravel, et il est automatiquement introduit dans la classe BaseController. Les deux règles exitsts() et unique() sont très puissantes et pratiques.
Ils doivent vérifier les données existantes dans la base de données lors de leur utilisation. Habituellement, ils sont écrits comme suit :
// exists example 'email' => 'exists:staff,account_id,1' // unique example 'email' => 'unique:users,email_address,$user->id,id,account_id,1'
La syntaxe de. la méthode d'écriture ci-dessus est difficile à retenir. Nous devons consulter la documentation presque chaque fois que nous l'utilisons. Mais à partir de la version 5.3.18 de Laravel, les deux règles de validation peuvent être simplifiées grâce à une nouvelle classe Rule.
Nous pouvons maintenant obtenir le même effet en utilisant la syntaxe de chaîne familière comme celle-ci :
'email' => [ 'required', Rule::exists('staff')->where(function ($query) { $query->where('account_id', 1); }), ],
'email' => [ 'required', Rule::unique('users')->ignore($user->id)->where(function ($query) { $query->where('account_id', 1); }) ],
Les deux règles de validation prennent également en charge la méthode de chaîne suivante :
where
whereNot
whereNull
whereNotNull
les règles de validation uniques prennent également en charge la méthode ignore, ce qui permet d'ignorer des données spécifiques lors de la validation.
La bonne nouvelle est que l'ancienne façon d'écrire est toujours entièrement prise en charge, et la nouvelle façon d'écrire la convertit en fait en l'ancienne façon d'écrire sous le capot grâce à la méthode formatWheres :
protected function formatWheres() { return collect($this->wheres)->map(function ($where) { return $where['column'].','.$where['value']; })->implode(','); }
Recommandations associées :
php Méthode pour déterminer si l'IP est une IP valide exemple d'adresse php
Conseils PHP pour empêcher le code d'attaque cross-site et xss
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!