Maison >développement back-end >tutoriel php >Méthode d'optimisation pour les règles de validation uniques et existantes dans Laravel

Méthode d'optimisation pour les règles de validation uniques et existantes dans Laravel

小云云
小云云original
2018-01-29 09:29:512161parcourir

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!

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