Maison >développement back-end >tutoriel php >Méthode d'optimisation pour les règles de validation uniques et existantes dans Laravel
Laravel fournit plusieurs méthodes pour valider 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. Cet article vous présente principalement les 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 l'étude ou le travail de chacun. .
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 l'écriture ci-dessus. La méthode est difficile à retenir et 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 vérification uniques prennent également en charge la méthode ignore, afin que vous puissiez ignorer des données spécifiques.
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 :
Les règles de validation alpha de Laravel5.1 ne sont pas valides pour le chinois ?
Validation complète du formulaire règles du framework PHP Yii
Règles complètes de validation du formulaire YII
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!