Laravel de Vérifier Si il Existe un Enregistrement
Je suis nouveau sur Laravel. S'il vous plaît excuser la question de newbie, mais comment savoir si il existe un enregistrement?
$user = User::where('email', '=', Input::get('email'));
Ce que je peux faire ici pour voir si $user
a un dossier?
- Eh bien pour commencer, vous devez exécuter une findOrFail() ou autre sur le $requête de l'utilisateur
- qui n'aide pas vraiment
- Alors que fait-il? Pourquoi ne pas les aider?
$user = User::where('email', '=', Input::get('email'));
crée simplement une requête dans$user
, vous devez exécuter cette requête.findOrFail()
est un moyen d'exécution de cette requête.get()
serait une autre façon,firstOrFail()
un autre - Si une suggestion "n'aide pas vraiment" essayez de dire pourquoi cela n'aide pas vraiment, parce que cela signifie que nous savons comment améliorer/changer cette suggestion
- considérez ceci i.imgur.com/ulqyOiw.png pas besoin de réinventer la roue
Vous devez vous connecter pour publier un commentaire.
Cela dépend si vous voulez travailler avec l'utilisateur par la suite ou seulement de vérifier si celle-ci existe.
Si vous souhaitez utiliser l'utilisateur de l'objet, si elle existe:
Et si vous voulez seulement vérifier
Ou même plus agréable
exists()
à l'encontre d'un inexistante enregistrement puis il donne une erreur:Call to a member function exists() on null
first()
if (!User::where('email', '=', Input::get('email'))->exists())...
pourrait fonctionner&& isset()
User::where('email', Input::get('email'))->exists();
count
après il a déjà trouvé un?Exists
est plus approprié ici - il s'arrête juste après la découverte d'un match. Même si la différence de performances peut être négligeable, mais il exprime l'intention de mieux.L'une des meilleure solution est d'utiliser le
firstOrNew
oufirstOrCreate
méthode. Le la documentation a plus de détails sur les deux.Éloquent utilise des collections.
Voir le lien suivant: https://laravel.com/docs/5.4/eloquent-collections
email
donc->isEmpty()
lèvera une erreur.Call to a member function isEmpty() on null
Laravel 5.6.26 v
pour trouver l'enregistrement existant par le biais de la clé primaire ( e-mail ou id )
puis
inclure " DB " et le nom de la table utilisateur devient pluriel à l'aide de la requête de l'utilisateur pour les utilisateurs
Utilisation
first()
, pascount()
si vous avez uniquement besoin de vérifier l'existence.first()
est plus rapide car il vérifie pour un seul match alors quecount()
compte tous les matches.Il s'agira de vérifier si la demande de courriel existe pas dans la table utilisateur:
Dans votre Contrôleur
Dans votre Affichage d'Affichage Existent Déjà Message
required|unique:users,email|email
serait de travailler avec try/catch
->get() doit retourner un tableau vide
Il est simple d'obtenir savoir si il y a des dossiers ou pas
vous pouvez utiliser laravel de validation .
Mais ce code est également bon:
Il s'agira de vérifier si l'adresse e-mail existe dans la table:
La vérification de
null
dansif
déclaration empêche Laravel de retour 404 immédiatement après la requête est terminée.Il me semble qu'il s'exécute double requête si l'utilisateur est trouvé, mais je n'arrive pas à trouver une autre solution fiable.
find
avecwhere
.User::where(id, 1)->first()
peut être écrite comme
Cela renvoie true ou false, sans affectation d'une variable temporaire si vous utilisez $utilisateur dans l'original de la déclaration.
Je pense que en dessous de moyen est la façon la plus simple pour atteindre le même :
Créé méthode ci-dessous (pour moi) pour vérifier si l'id de l'enregistrement existe sur la table Db ou pas.
À la maison Ça aide!
voici un lien vers quelque chose de l pense peut aider
https://laraveldaily.com/dont-check-record-exists-methods-orcreate-ornew/
Plus brefs options de fonctionnement:
c'est un code simple pour vérifier le courrier électronique est exister ou non dans la base de données